mirror of
https://github.com/Kingsrook/qqq.git
synced 2025-07-18 13:10:44 +00:00
Better handling of joins (flip the join-on if needed)
This commit is contained in:
@ -212,7 +212,7 @@ public abstract class AbstractRDBMSAction implements QActionInterface
|
|||||||
// find the join in the instance, to set the 'on' clause //
|
// find the join in the instance, to set the 'on' clause //
|
||||||
////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////
|
||||||
List<String> joinClauseList = new ArrayList<>();
|
List<String> joinClauseList = new ArrayList<>();
|
||||||
String baseTableName = joinsContext.resolveTableNameOrAliasToTableName(queryJoin.getBaseTableOrAlias());
|
String baseTableName = Objects.requireNonNullElse(joinsContext.resolveTableNameOrAliasToTableName(queryJoin.getBaseTableOrAlias()), tableName);
|
||||||
QJoinMetaData joinMetaData = Objects.requireNonNullElseGet(queryJoin.getJoinMetaData(), () ->
|
QJoinMetaData joinMetaData = Objects.requireNonNullElseGet(queryJoin.getJoinMetaData(), () ->
|
||||||
{
|
{
|
||||||
QJoinMetaData found = findJoinMetaData(instance, joinsContext, baseTableName, queryJoin.getJoinTable());
|
QJoinMetaData found = findJoinMetaData(instance, joinsContext, baseTableName, queryJoin.getJoinTable());
|
||||||
@ -239,6 +239,13 @@ public abstract class AbstractRDBMSAction implements QActionInterface
|
|||||||
}
|
}
|
||||||
|
|
||||||
String joinTableOrAlias = queryJoin.getJoinTableOrItsAlias();
|
String joinTableOrAlias = queryJoin.getJoinTableOrItsAlias();
|
||||||
|
if(!joinMetaData.getLeftTable().equals(baseTableName))
|
||||||
|
{
|
||||||
|
joinOn = joinOn.flip();
|
||||||
|
QTableMetaData tmpTable = leftTable;
|
||||||
|
leftTable = rightTable;
|
||||||
|
rightTable = tmpTable;
|
||||||
|
}
|
||||||
|
|
||||||
joinClauseList.add(escapeIdentifier(baseTableOrAlias)
|
joinClauseList.add(escapeIdentifier(baseTableOrAlias)
|
||||||
+ "." + escapeIdentifier(getColumnName(leftTable.getField(joinOn.getLeftField())))
|
+ "." + escapeIdentifier(getColumnName(leftTable.getField(joinOn.getLeftField())))
|
||||||
|
Reference in New Issue
Block a user