Search in sources :

Example 1 with Column

use of com.querydsl.sql.Column in project querydsl by querydsl.

the class AnnotationMapper method createMap.

@Override
public Map<Path<?>, Object> createMap(RelationalPath<?> path, Object object) {
    try {
        Map<String, Path<?>> columnToPath = new HashMap<String, Path<?>>();
        for (Path<?> column : path.getColumns()) {
            columnToPath.put(ColumnMetadata.getName(column), column);
        }
        Map<Path<?>, Object> values = new HashMap<Path<?>, Object>();
        for (Field field : ReflectionUtils.getFields(object.getClass())) {
            Column ann = field.getAnnotation(Column.class);
            if (ann != null) {
                field.setAccessible(true);
                Object propertyValue = field.get(object);
                if (propertyValue != null) {
                    if (columnToPath.containsKey(ann.value())) {
                        values.put(columnToPath.get(ann.value()), propertyValue);
                    }
                } else if (withNullBindings) {
                    values.put(columnToPath.get(ann.value()), Null.DEFAULT);
                }
            }
        }
        return values;
    } catch (IllegalAccessException e) {
        throw new QueryException(e);
    }
}
Also used : RelationalPath(com.querydsl.sql.RelationalPath) Path(com.querydsl.core.types.Path) Field(java.lang.reflect.Field) QueryException(com.querydsl.core.QueryException) HashMap(java.util.HashMap) Column(com.querydsl.sql.Column)

Aggregations

QueryException (com.querydsl.core.QueryException)1 Path (com.querydsl.core.types.Path)1 Column (com.querydsl.sql.Column)1 RelationalPath (com.querydsl.sql.RelationalPath)1 Field (java.lang.reflect.Field)1 HashMap (java.util.HashMap)1