private void initText(String[] columns) { String text = String.join( ", ", columns ); if ( columns.length > 1 && getWalker().isComparativeExpressionClause() ) { text = "(" + text + ")"; } setText( text ); }
private FromElement locateSingleFromElement() { List fromElements = getWalker().getCurrentFromClause().getFromElements(); if (fromElements == null || fromElements.size() != 1) { // TODO : should this be an error? return null; } FromElement element = (FromElement) fromElements.get(0); if (element.getClassAlias() != null) { // naked property-refs cannot be used with an aliased from element return null; } return element; }
protected String[] resolveColumns(QueryableCollection collectionPersister) { final FromElement fromElement = getFromElement(); return fromElement.toColumns( fromElement.getCollectionTableAlias(), "elements", // the JPA VALUE "qualifier" is the same concept as the HQL ELEMENTS function/property getWalker().isInSelect() ); }
final FromElement element = getWalker().getCurrentFromClause().getFromElement( alias ); if ( element == null ) { return false; element.applyTreatAsDeclarations( getWalker().getTreatAsDeclarationsByPath( alias ) ); final Dialect dialect = getWalker().getSessionFactoryHelper().getFactory().getDialect(); final boolean isInCount = getWalker().isInCount(); final boolean isInDistinctCount = isInCount && getWalker().isInCountDistinct(); final boolean isInNonDistinctCount = isInCount && ! getWalker().isInCountDistinct(); final boolean isCompositeValue = columnExpressions.length > 1; if ( isCompositeValue ) { (isInDistinctCount && ! dialect.requiresParensForTupleDistinctCounts()) || isInNonDistinctCount || getWalker().getCurrentTopLevelClauseType() == HqlSqlTokenTypes.ORDER || getWalker().getCurrentTopLevelClauseType() == HqlSqlTokenTypes.GROUP; if ( ! shouldSkipWrappingInParenthesis ) { joinedFragment = "(" + joinedFragment + ")";
@Override public Type getDataType() { Type type = super.getDataType(); if ( type != null ) { return type; } FromElement fe = getFromElement(); if ( fe != null ) { return fe.getDataType(); } SQLFunction sf = getWalker().getSessionFactoryHelper().findSQLFunction( getText() ); if ( sf != null ) { return sf.getReturnType( null, getWalker().getSessionFactoryHelper().getFactory() ); } return null; }
public void resolve(boolean generateJoin, boolean implicitJoin, String classAlias, AST parent, AST parentPredicate) { if (!isResolved()) { if ( getWalker().getCurrentFromClause().isFromElementAlias( getText() ) ) { FromElement fromElement = getWalker().getCurrentFromClause().getFromElement( getText() ); if ( fromElement.getQueryableCollection() != null && fromElement.getQueryableCollection().getElementType().isComponentType() ) { if ( getWalker().isInSelect() ) { && ( getWalker().getAST() instanceof AbstractMapComponentNode || getWalker().getAST() instanceof IndexNode ) && getWalker().getCurrentFromClause().isFromElementAlias( getOriginalText() ) ) { getWalker().getLiteralProcessor().processConstant(this, false);
getWalker().getCurrentFromClause(), getFromElement(), propertyName, FromElement elem = factory.createCollection(queryableCollection, role, joinType, fetch, true); setFromElement(elem); getWalker().addQuerySpaces(queryableCollection.getCollectionSpaces()); // Always add the collection's query spaces.
private DereferenceType resolveAsNakedPropertyRef() { FromElement fromElement = locateSingleFromElement(); if (fromElement == null) { return DereferenceType.UNKNOWN; } Queryable persister = fromElement.getQueryable(); if (persister == null) { return DereferenceType.UNKNOWN; } Type propertyType = getNakedPropertyType(fromElement); if (propertyType == null) { // assume this ident's text does *not* refer to a property on the given persister return DereferenceType.UNKNOWN; } if ((propertyType.isComponentType() || propertyType.isAssociationType() )) { return DereferenceType.COMPONENT_REF; } setFromElement(fromElement); String property = getText(); String[] columns = getWalker().isSelectStatement() ? persister.toColumns(fromElement.getTableAlias(), property) : persister.toColumns(property); String text = String.join(", ", columns); setText(columns.length == 1 ? text : "(" + text + ")"); setType(SqlTokenTypes.SQL_TOKEN); // these pieces are needed for usage in select clause super.setDataType(propertyType); nakedPropertyRef = true; return DereferenceType.PROPERTY_REF; }
private FromElement locateSingleFromElement() { List fromElements = getWalker().getCurrentFromClause().getFromElements(); if (fromElements == null || fromElements.size() != 1) { // TODO : should this be an error? return null; } FromElement element = (FromElement) fromElements.get(0); if (element.getClassAlias() != null) { // naked property-refs cannot be used with an aliased from element return null; } return element; }
private FromElement locateSingleFromElement() { List fromElements = getWalker().getCurrentFromClause().getFromElements(); if (fromElements == null || fromElements.size() != 1) { // TODO : should this be an error? return null; } FromElement element = (FromElement) fromElements.get(0); if (element.getClassAlias() != null) { // naked property-refs cannot be used with an aliased from element return null; } return element; }
@Override public Type getDataType() { Type type = super.getDataType(); if ( type != null ) { return type; } FromElement fe = getFromElement(); if ( fe != null ) { return fe.getDataType(); } SQLFunction sf = getWalker().getSessionFactoryHelper().findSQLFunction( getText() ); if ( sf != null ) { return sf.getReturnType( null, getWalker().getSessionFactoryHelper().getFactory() ); } return null; }
@Override public Type getDataType() { Type type = super.getDataType(); if ( type != null ) { return type; } FromElement fe = getFromElement(); if ( fe != null ) { return fe.getDataType(); } SQLFunction sf = getWalker().getSessionFactoryHelper().findSQLFunction( getText() ); if ( sf != null ) { return sf.getReturnType( null, getWalker().getSessionFactoryHelper().getFactory() ); } return null; }
private boolean resolveAsAlias() { // This is not actually a constant, but a reference to FROM element. FromElement element = getWalker().getCurrentFromClause().getFromElement(getText()); if (element != null) { setFromElement(element); setText(element.getIdentityColumn()); setType(SqlTokenTypes.ALIAS_REF); return true; } return false; }
private boolean resolveAsAlias() { // This is not actually a constant, but a reference to FROM element. FromElement element = getWalker().getCurrentFromClause().getFromElement(getText()); if (element != null) { setFromElement(element); setText(element.getIdentityColumn()); setType(SqlTokenTypes.ALIAS_REF); return true; } return false; }
getWalker().getCurrentFromClause(), getFromElement(), propertyName, FromElement elem = factory.createCollection(queryableCollection, role, joinType, fetch, true); setFromElement(elem); getWalker().addQuerySpaces(queryableCollection.getCollectionSpaces()); // Always add the collection's query spaces.
getWalker().getCurrentFromClause(), getFromElement(), propertyName, FromElement elem = factory.createCollection(queryableCollection, role, joinType, fetch, true); setFromElement(elem); getWalker().addQuerySpaces(queryableCollection.getCollectionSpaces()); // Always add the collection's query spaces.
private int resolveAsNakedPropertyRef() { FromElement fromElement = locateSingleFromElement(); if (fromElement == null) { return UNKNOWN; } Queryable persister = fromElement.getQueryable(); if (persister == null) { return UNKNOWN; } Type propertyType = getNakedPropertyType(fromElement); if (propertyType == null) { // assume this ident's text does *not* refer to a property on the given persister return UNKNOWN; } if ((propertyType.isComponentType() || propertyType.isAssociationType() )) { return COMPONENT_REF; } setFromElement(fromElement); String property = getText(); String[] columns = getWalker().isSelectStatement() ? persister.toColumns(fromElement.getTableAlias(), property) : persister.toColumns(property); String text = StringHelper.join(", ", columns); setText(columns.length == 1 ? text : "(" + text + ")"); setType(SqlTokenTypes.SQL_TOKEN); // these pieces are needed for usage in select clause super.setDataType(propertyType); nakedPropertyRef = true; return PROPERTY_REF; }
private int resolveAsNakedPropertyRef() { FromElement fromElement = locateSingleFromElement(); if (fromElement == null) { return UNKNOWN; } Queryable persister = fromElement.getQueryable(); if (persister == null) { return UNKNOWN; } Type propertyType = getNakedPropertyType(fromElement); if (propertyType == null) { // assume this ident's text does *not* refer to a property on the given persister return UNKNOWN; } if ((propertyType.isComponentType() || propertyType.isAssociationType() )) { return COMPONENT_REF; } setFromElement(fromElement); String property = getText(); String[] columns = getWalker().isSelectStatement() ? persister.toColumns(fromElement.getTableAlias(), property) : persister.toColumns(property); String text = StringHelper.join(", ", columns); setText(columns.length == 1 ? text : "(" + text + ")"); setType(SqlTokenTypes.SQL_TOKEN); // these pieces are needed for usage in select clause super.setDataType(propertyType); nakedPropertyRef = true; return PROPERTY_REF; }