@Override public String render(Type firstArgumentType, List arguments, SessionFactoryImplementor factory) { if ( arguments.size() > 1 ) { if ( "distinct".equalsIgnoreCase( arguments.get( 0 ).toString() ) ) { return renderCountDistinct( arguments, factory.getDialect() ); } } return super.render( firstArgumentType, arguments, factory ); }
@Override protected StringBuilder whereString(String alias, String[] columnNames, int batchSize) { return StringHelper.buildBatchFetchRestrictionFragment( alias, columnNames, getFactory().getDialect() ); } };
protected static String getTemplateFromString(String string, SessionFactoryImplementor factory) { return string == null ? null : Template.renderWhereStringTemplate( string, factory.getDialect(), factory.getSqlFunctionRegistry() ); }
/** * Build LIMIT clause handler applicable for given selection criteria. Returns {@link org.hibernate.dialect.pagination.NoopLimitHandler} delegate * if dialect does not support LIMIT expression or processed query does not use pagination. * * @param selection Selection criteria. * @return LIMIT clause delegate. */ protected LimitHandler getLimitHandler(RowSelection selection) { final LimitHandler limitHandler = getFactory().getDialect().getLimitHandler(); return LimitHelper.useLimit( limitHandler, selection ) ? limitHandler : NoopLimitHandler.INSTANCE; }
@Override protected StringBuilder whereString(String alias, String[] columnNames, String subselect, int batchSize) { if ( subselect != null ) { return super.whereString( alias, columnNames, subselect, batchSize ); } return StringHelper.buildBatchFetchRestrictionFragment( alias, columnNames, getFactory().getDialect() ); } };
public String getColumnName(int position) throws HibernateException { try { return factory.getDialect().getColumnAliasExtractor().extractColumnAlias( resultSetMetaData, position ); } catch( SQLException e ) { throw new HibernateException( "Could not resolve column name [" + position + "]", e ); } }
@Override public String toSqlString(Criteria criteria, CriteriaQuery criteriaQuery) throws HibernateException { return criteriaQuery.getFactory().getDialect().getNotExpression( criterion.toSqlString( criteria, criteriaQuery ) ); }
private void writeCrossJoinSeparator() { if ( REGRESSION_STYLE_CROSS_JOINS ) { out( ", " ); } else { out( sessionFactory.getDialect().getCrossJoinSeparator() ); } }
@Override public ScrollableResults scroll() { return scroll( session.getFactory().getDialect().defaultScrollMode() ); } @Override
@Override public String getRenderText(SessionFactoryImplementor sessionFactory) { int scalarColumnIndex = selectExpression.getScalarColumnIndex(); if ( scalarColumnIndex < 0 ) { throw new IllegalStateException( "selectExpression.getScalarColumnIndex() must be >= 0; actual = " + scalarColumnIndex ); } return sessionFactory.getDialect().replaceResultVariableInOrderByClauseWithPosition() ? getColumnPositionsString( scalarColumnIndex ) : getColumnNamesString( scalarColumnIndex ); }
@Override protected StringBuilder whereString(String alias, String[] columnNames, String subselect, int batchSize) { if ( subselect != null ) { return super.whereString( alias, columnNames, subselect, batchSize ); } return StringHelper.buildBatchFetchRestrictionFragment( alias, columnNames, getFactory().getDialect() ); } };
@Override protected String renderOrderByElement(String expression, String collation, String order, String nulls) { final NullPrecedence nullPrecedence = NullPrecedence.parse( nulls, sessionFactory.getSessionFactoryOptions().getDefaultNullPrecedence() ); return sessionFactory.getDialect().renderOrderByElement( expression, collation, order, nullPrecedence ); } }
@Override protected String renderOrderByElement(String expression, String order, String nulls) { final NullPrecedence nullPrecedence = NullPrecedence.parse( nulls, sessionFactory.getSettings() .getDefaultNullPrecedence() ); return sessionFactory.getDialect().renderOrderByElement( expression, null, order, nullPrecedence ); } }
private void initText() { String[] cols = getColumns(); String text = String.join( ", ", cols ); boolean countDistinct = getWalker().isInCountDistinct() && getWalker().getSessionFactoryHelper().getFactory().getDialect().requiresParensForTupleDistinctCounts(); if ( cols.length > 1 && ( getWalker().isComparativeExpressionClause() || countDistinct ) ) { text = "(" + text + ")"; } setText( text ); }
public String getIdentitySelectString() { //TODO: cache this in an instvar return getFactory().getDialect().getIdentityColumnSupport() .getIdentitySelectString( getTableName( 0 ), getKeyColumns( 0 )[0], getIdentifierType().sqlTypes( getFactory() )[0] ); }
public String getSelectByUniqueKeyString(String propertyName) { return new SimpleSelect( getFactory().getDialect() ) .setTableName( getTableName( 0 ) ) .addColumns( getKeyColumns( 0 ) ) .addCondition( getPropertyColumnNames( propertyName ), "=?" ) .toStatementString(); }
private String generateVersionIncrementUpdateString() { Update update = new Update( getFactory().getDialect() ); update.setTableName( getTableName( 0 ) ); if ( getFactory().getSessionFactoryOptions().isCommentsEnabled() ) { update.setComment( "forced version increment" ); } update.addColumn( getVersionColumnName() ); update.addPrimaryKeyColumns( rootTableKeyColumnNames ); update.setVersionColumnName( getVersionColumnName() ); return update.toStatementString(); }
protected String generateLockString() { final SessionFactoryImplementor factory = lockable.getFactory(); final Update update = new Update( factory.getDialect() ); update.setTableName( lockable.getRootTableName() ); update.addPrimaryKeyColumns( lockable.getRootTableIdentifierColumnNames() ); update.setVersionColumnName( lockable.getVersionColumnName() ); update.addColumn( lockable.getVersionColumnName() ); if ( factory.getSessionFactoryOptions().isCommentsEnabled() ) { update.setComment( lockMode + " lock " + lockable.getEntityName() ); } return update.toStatementString(); }
protected String generateLockString() { final SessionFactoryImplementor factory = lockable.getFactory(); final Update update = new Update( factory.getDialect() ); update.setTableName( lockable.getRootTableName() ); update.addPrimaryKeyColumns( lockable.getRootTableIdentifierColumnNames() ); update.setVersionColumnName( lockable.getVersionColumnName() ); update.addColumn( lockable.getVersionColumnName() ); if ( factory.getSessionFactoryOptions().isCommentsEnabled() ) { update.setComment( lockMode + " lock " + lockable.getEntityName() ); } return update.toStatementString(); }
protected String generateLockString() { final SessionFactoryImplementor factory = lockable.getFactory(); final Update update = new Update( factory.getDialect() ); update.setTableName( lockable.getRootTableName() ); update.addPrimaryKeyColumns( lockable.getRootTableIdentifierColumnNames() ); update.setVersionColumnName( lockable.getVersionColumnName() ); update.addColumn( lockable.getVersionColumnName() ); if ( factory.getSessionFactoryOptions().isCommentsEnabled() ) { update.setComment( lockMode + " lock " + lockable.getEntityName() ); } return update.toStatementString(); }