protected StringBuilder getPreparedStatementDatasetIDs( AbstractWhereBuilder builder ) { StringBuilder getDatasetIDs = new StringBuilder( 300 ); String rootTableAlias = builder.getAliasManager().getRootTableAlias(); getDatasetIDs.append( "SELECT DISTINCT " ); getDatasetIDs.append( rootTableAlias ); getDatasetIDs.append( '.' ); getDatasetIDs.append( idColumn ); // for SELECT DISTINCT, all ORDER BY columns have to be SELECTed as well if ( builder.getOrderBy() != null ) { // hack to transform the ORDER BY column list in select list String orderColList = builder.getOrderBy().getSQL().toString(); int i = 1; while ( orderColList.contains( " ASC" ) || orderColList.contains( "DESC" ) ) { orderColList = orderColList.replaceFirst( " ASC| DESC", " AS crit" + ( i++ ) ); } getDatasetIDs.append( ',' ); getDatasetIDs.append( orderColList ); } return getDatasetIDs; }
protected void getPSBody( AbstractWhereBuilder builder, StringBuilder getDatasetIDs ) { String rootTableAlias = builder.getAliasManager().getRootTableAlias(); getDatasetIDs.append( " FROM " ); getDatasetIDs.append( mainTable ); getDatasetIDs.append( " " ); getDatasetIDs.append( rootTableAlias ); for ( PropertyNameMapping mappedPropName : builder.getMappedPropertyNames() ) { for ( Join join : mappedPropName.getJoins() ) { getDatasetIDs.append( " LEFT OUTER JOIN " ); getDatasetIDs.append( join.getToTable() ); getDatasetIDs.append( ' ' ); getDatasetIDs.append( join.getToTableAlias() ); getDatasetIDs.append( " ON " ); getDatasetIDs.append( join.getSQLJoinCondition() ); } } if ( builder.getWhere() != null ) { getDatasetIDs.append( " WHERE " ); getDatasetIDs.append( builder.getWhere().getSQL() ); } }
getDatasetIDs.append( "SELECT " ); getDatasetIDs.append( "COUNT( DISTINCT(" ); getDatasetIDs.append( builder.getAliasManager().getRootTableAlias() ); getDatasetIDs.append( "." ); getDatasetIDs.append( idColumn );
LOG.debug( "WHERE clause: " + wb.getWhere() ); String alias = wb != null ? wb.getAliasManager().getRootTableAlias() : "X1";
sql.append( "COUNT(*) FROM (SELECT DISTINCT " ); String ftTableAlias = wb.getAliasManager().getRootTableAlias();
String rootTableQualifier = builder.getAliasManager().getRootTableAlias() + "."; int columnCount = StringUtils.count( sortCols, "," ) + 1; int rootAliasCount = StringUtils.count( sortCols, rootTableQualifier ); String colRegEx = builder.getAliasManager().getRootTableAlias() + ".\\S+"; for ( int i = 1; i <= columnCount; i++ ) { sortCols = sortCols.replaceFirst( colRegEx, "crit" + i );
LOG.debug( "WHERE clause: " + wb.getWhere() ); String alias = wb != null ? wb.getAliasManager().getRootTableAlias() : "X1";
String ftTableAlias = wb.getAliasManager().getRootTableAlias(); LOG.debug( "WHERE clause: " + wb.getWhere() ); LOG.debug( "ORDER BY clause: " + wb.getOrderBy() );