@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); } }
@SuppressWarnings({ "unchecked", "rawtypes" }) private <T> Type<T> getType(@Nullable Path<?> path, Class<T> clazz) { if (hasTableColumnTypes && path != null && !clazz.equals(Null.class) && path.getMetadata().getParent() instanceof RelationalPath) { String table = ((RelationalPath)path.getMetadata().getParent()).getTableName(); String column = ColumnMetadata.getName(path); Type<T> type = (Type)javaTypeMapping.getType(table, column); if (type != null) { return type; } } return javaTypeMapping.getType(clazz); }
StringBuilder columnMeta = new StringBuilder(); columnMeta.append("ColumnMetadata"); columnMeta.append(".named(\"" + metadata.getName() + "\")"); columnMeta.append(".withIndex(" + metadata.getIndex() + ")"); String type = String.valueOf(metadata.getJdbcType());
public static String getName(Path<?> path) { Path<?> parent = path.getMetadata().getParent(); if (parent instanceof EntityPath) { Object columnMetadata = ((EntityPath<?>) parent).getMetadata(path); if (columnMetadata instanceof ColumnMetadata) { return ((ColumnMetadata)columnMetadata).getName(); } } return path.getMetadata().getName(); }
private PreparedStatement prepareStatementAndSetParameters(SQLSerializer serializer, boolean withKeys) throws SQLException { listeners.prePrepare(context); queryString = serializer.toString(); constants = serializer.getConstants(); logQuery(logger, queryString, constants); PreparedStatement stmt; if (withKeys) { String[] target = new String[keys.size()]; for (int i = 0; i < target.length; i++) { target[i] = ColumnMetadata.getName(getKeys().get(i)); } stmt = connection.prepareStatement(queryString, target); } else { stmt = connection.prepareStatement(queryString); } setParameters(stmt, serializer.getConstants(), serializer.getConstantPaths(), metadata.getParams()); context.addPreparedStatement(stmt); listeners.prepared(context); return stmt; }
protected void appendAsColumnName(Path<?> path, boolean precededByDot) { String column = ColumnMetadata.getName(path); if (path.getMetadata().getParent() instanceof RelationalPath) { RelationalPath<?> parent = (RelationalPath<?>)path.getMetadata().getParent(); column = configuration.getColumnOverride(parent.getSchemaAndTable(), column); } append(templates.quoteIdentifier(column, precededByDot)); }
private PreparedStatement prepareStatementAndSetParameters(SQLSerializer serializer, boolean withKeys) throws SQLException { listeners.prePrepare(context); queryString = serializer.toString(); constants = serializer.getConstants(); logQuery(logger, queryString, constants); PreparedStatement stmt; if (withKeys) { if (entity.getPrimaryKey() != null) { String[] target = new String[entity.getPrimaryKey().getLocalColumns().size()]; for (int i = 0; i < target.length; i++) { Path<?> path = entity.getPrimaryKey().getLocalColumns().get(i); String column = ColumnMetadata.getName(path); target[i] = column; } stmt = connection.prepareStatement(queryString, target); } else { stmt = connection.prepareStatement(queryString, Statement.RETURN_GENERATED_KEYS); } } else { stmt = connection.prepareStatement(queryString); } setParameters(stmt, serializer.getConstants(), serializer.getConstantPaths(), metadata.getParams()); context.addPreparedStatement(stmt); listeners.prepared(context); return stmt; }