private Object makeUpdate(Object o, Connection connection) {
		StringBuilder query = new StringBuilder();

		query.append("UPDATE `" + getTableName(o.getClass()) + "` SET ");

		Boolean first = true;
		for (Field objectField : o.getClass().getFields()) {

			if (Modifier.isVolatile(objectField.getModifiers()))
				continue;
			if (objectField.getAnnotation(ORM_PK.class) != null)
				continue;

			if (first) {
				query.append("`" + getFieldName(objectField) + "` = ?");
				first = false;
			} else {
				query.append(",`" + getFieldName(objectField) + "` = ?");
			}
		}
		query.append(" WHERE `" + getFieldName(getPrimaryKey(o)) + "` = ?");

		try {
			PreparedStatement updateStatement = connection
					.prepareStatement(query.toString());
			int fieldn = 1;
			for (Field objectField : o.getClass().getFields()) {
				if (Modifier.isVolatile(objectField.getModifiers()))
					continue;
				if (objectField.getAnnotation(ORM_PK.class) != null)
					continue;
				
				updateStatement.setObject(fieldn++, objectField.get(o),
						JavaSQLTypeImpl.typesMapping.getSqlTypeInfo(objectField
								.getType()).sqlType);
			}

			return o;

		} catch (SQLException | IllegalArgumentException
				| IllegalAccessException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			return null;
		}
	}