private void initStatementString( final String projection, final String condition, final String orderBy, final String groupBy, final LockMode lockMode) throws MappingException { final int joins = countEntityPersisters(associations); suffixes = BasicLoader.generateSuffixes(joins + 1); JoinFragment ojf = mergeOuterJoins(associations); Select select = new Select(getDialect()) .setLockMode(lockMode) .setSelectClause( projection == null ? persister.selectFragment(alias, suffixes[joins]) + selectString(associations) : projection) .setFromClause( getDialect().appendLockHint(lockMode, persister.fromTableFragment(alias)) + persister.fromJoinFragment(alias, true, true)) .setWhereClause(condition) .setOuterJoins( ojf.toFromFragmentString(), ojf.toWhereFragmentString() + getWhereFragment()) .setOrderByClause(orderBy(associations, orderBy)) .setGroupByClause(groupBy); if (getFactory().getSettings().isCommentsEnabled()) { select.setComment(getComment()); } sql = select.toStatementString(); }
public String selectFragment( Joinable rhs, String rhsAlias, String lhsAlias, String entitySuffix, String collectionSuffix, boolean includeCollectionColumns) { StringBuffer buf = new StringBuffer(); if (includeCollectionColumns) { // buf.append( selectFragment( lhsAlias, "" ) )//ignore suffix for collection columns! buf.append(selectFragment(lhsAlias, collectionSuffix)).append(", "); } OuterJoinLoadable ojl = (OuterJoinLoadable) getElementPersister(); return buf.append( ojl.selectFragment(lhsAlias, entitySuffix)) // use suffix for the entity columns .toString(); }