/** * <p>Renders the JOIN portion of the query in the database-specific SQL * dialect. Very few databases deviate from the standard in this matter, * thus the default implementation is usually sufficient.</p> * <p/> * <p>An example return value: <code>" JOIN table1 ON table.id = table1.value"</code></p> * <p/> * <p>There is usually no need to call this method directly. Under normal * operations it functions as a delegate for {@link #renderQuery(Query, TableNameConverter, boolean)}.</p> * * @param query The Query instance from which to determine the JOIN properties. * @param converter The name converter to allow conversion of the query entity * interface into a proper table name. * @return The database-specific SQL rendering of the JOIN portion of the query. */ protected String renderQueryJoins(Query query, TableNameConverter converter) { final StringBuilder sql = new StringBuilder(); for (Map.Entry<Class<? extends RawEntity<?>>, String> joinEntry : query.getJoins().entrySet()) { sql.append(" JOIN ").append(withSchema(converter.getName(joinEntry.getKey()))); if (query.getAlias(joinEntry.getKey()) != null) { sql.append(" ").append(query.getAlias(joinEntry.getKey())); } if (joinEntry.getValue() != null) { sql.append(" ON ").append(processOnClause(joinEntry.getValue())); } } return sql.toString(); }
private String withAlias(Query query, String field, final TableNameConverter converter) { final StringBuilder withAlias = new StringBuilder(); if (query.getAlias(query.getTableType()) != null) { withAlias.append(query.getAlias(query.getTableType())).append("."); } else if (!query.getJoins().isEmpty()) { String queryTable = query.getTable(); String tableName = queryTable != null ? queryTable : converter.getName(query.getTableType()); withAlias.append(processID(tableName)).append("."); } return withAlias.append(processID(field)).toString(); }
/** * <p>Renders the JOIN portion of the query in the database-specific SQL * dialect. Very few databases deviate from the standard in this matter, * thus the default implementation is usually sufficient.</p> * <p/> * <p>An example return value: <code>" JOIN table1 ON table.id = table1.value"</code></p> * <p/> * <p>There is usually no need to call this method directly. Under normal * operations it functions as a delegate for {@link #renderQuery(Query, TableNameConverter, boolean)}.</p> * * @param query The Query instance from which to determine the JOIN properties. * @param converter The name converter to allow conversion of the query entity * interface into a proper table name. * @return The database-specific SQL rendering of the JOIN portion of the query. */ protected String renderQueryJoins(Query query, TableNameConverter converter) { final StringBuilder sql = new StringBuilder(); for (Map.Entry<Class<? extends RawEntity<?>>, String> joinEntry : query.getJoins().entrySet()) { sql.append(" JOIN ").append(withSchema(converter.getName(joinEntry.getKey()))); if (query.getAlias(joinEntry.getKey()) != null) { sql.append(" ").append(query.getAlias(joinEntry.getKey())); } if (joinEntry.getValue() != null) { sql.append(" ON ").append(processOnClause(joinEntry.getValue())); } } return sql.toString(); }
private String withAlias(Query query, String field, final TableNameConverter converter) { final StringBuilder withAlias = new StringBuilder(); if (query.getAlias(query.getTableType()) != null) { withAlias.append(query.getAlias(query.getTableType())).append("."); } else if (!query.getJoins().isEmpty()) { String queryTable = query.getTable(); String tableName = queryTable != null ? queryTable : converter.getName(query.getTableType()); withAlias.append(processID(tableName)).append("."); } return withAlias.append(processID(field)).toString(); }