private void saveHasOne(Object obj, String column,
			Map<String, Object> primaryKey) {
		PreparedStatement stmt = null;
		Connection connection = null;

		try {

			PropertyDescriptor[] pd = handler.getPropertyDescriptors(obj
					.getClass());
			StringBuilder sb = new StringBuilder();
			StringBuilder values = new StringBuilder();
			sb.append("insert into " + obj.getClass().getSimpleName() + "(");
			values.append("values(");
			Map<String, Object> belongsTo = AnnotationUtils.getBelongsTo(obj);
			for (int i = 0; i < pd.length; i++) {
				if ("class".equals(pd[i].getName())) {
					continue;
				}
				if (belongsTo.get("fieldName") != null
						&& pd[i].getName().equals(belongsTo.get("fieldName"))) {
					continue;
				}
				Method getter = pd[i].getReadMethod();
				Object value = getter.invoke(obj);

				sb.append(pd[i].getName());
				values.append("'").append(value).append("'");

				if (i != pd.length - 1) {
					sb.append(",");
					values.append(",");
				}
			}
			if (obj != null) {
				sb.append(",").append(column).append(") ");
				values.append(",'").append(primaryKey.get("value"))
						.append("')");
			}

			connection = DB.getConnection();
			stmt = connection.prepareStatement(sb.toString()
					+ values.toString());

			stmt.executeUpdate();

		} catch (Exception e) {
			throw new ExcuteQueryException(e);
		} finally {
			DbUtils.closeQuietly(stmt);
		}

	}