Class JoinWalker

    • Field Detail

      • associations

        protected final java.util.List associations
      • suffixes

        protected java.lang.String[] suffixes
      • collectionSuffixes

        protected java.lang.String[] collectionSuffixes
      • persisters

        protected Loadable[] persisters
      • owners

        protected int[] owners
      • ownerAssociationTypes

        protected EntityType[] ownerAssociationTypes
      • collectionOwners

        protected int[] collectionOwners
      • aliases

        protected java.lang.String[] aliases
      • lockModeArray

        protected LockMode[] lockModeArray
      • sql

        protected java.lang.String sql
    • Method Detail

      • getAssociations

        public java.util.List getAssociations()
      • getCollectionSuffixes

        public java.lang.String[] getCollectionSuffixes()
      • setCollectionSuffixes

        public void setCollectionSuffixes​(java.lang.String[] collectionSuffixes)
      • getLockModeOptions

        public LockOptions getLockModeOptions()
      • getLockModeArray

        public LockMode[] getLockModeArray()
      • getSuffixes

        public java.lang.String[] getSuffixes()
      • setSuffixes

        public void setSuffixes​(java.lang.String[] suffixes)
      • getAliases

        public java.lang.String[] getAliases()
      • setAliases

        public void setAliases​(java.lang.String[] aliases)
      • getCollectionOwners

        public int[] getCollectionOwners()
      • setCollectionOwners

        public void setCollectionOwners​(int[] collectionOwners)
      • setCollectionPersisters

        public void setCollectionPersisters​(CollectionPersister[] collectionPersisters)
      • getOwnerAssociationTypes

        public EntityType[] getOwnerAssociationTypes()
      • setOwnerAssociationTypes

        public void setOwnerAssociationTypes​(EntityType[] ownerAssociationType)
      • getOwners

        public int[] getOwners()
      • setOwners

        public void setOwners​(int[] owners)
      • getPersisters

        public Loadable[] getPersisters()
      • setPersisters

        public void setPersisters​(Loadable[] persisters)
      • getSQLString

        public java.lang.String getSQLString()
      • setSql

        public void setSql​(java.lang.String sql)
      • getDialect

        protected Dialect getDialect()
      • hasRestriction

        protected boolean hasRestriction​(PropertyPath path)
      • getWithClause

        protected java.lang.String getWithClause​(PropertyPath path)
      • walkEntityTree

        protected final void walkEntityTree​(OuterJoinLoadable persister,
                                            java.lang.String alias)
                                     throws MappingException
        Walk the association tree for an entity, adding associations which should be join fetched to the associations inst var. This form is the entry point into the walking for a given entity, starting the recursive calls into walkEntityTree(org.hibernate.persister.entity.OuterJoinLoadable, String, PropertyPath, int).
        Parameters:
        persister - The persister representing the entity to be walked.
        alias - The (root) alias to use for this entity/persister.
        Throws:
        MappingException - ???
      • getJoinType

        protected JoinType getJoinType​(OuterJoinLoadable persister,
                                       PropertyPath path,
                                       int propertyNumber,
                                       AssociationType associationType,
                                       FetchMode metadataFetchMode,
                                       CascadeStyle metadataCascadeStyle,
                                       java.lang.String lhsTable,
                                       java.lang.String[] lhsColumns,
                                       boolean nullable,
                                       int currentDepth)
                                throws MappingException
        Determine the appropriate type of join (if any) to use to fetch the given association.
        Parameters:
        persister - The owner of the association.
        path - The path to the association
        propertyNumber - The property number representing the association.
        associationType - The association type.
        metadataFetchMode - The metadata-defined fetch mode.
        metadataCascadeStyle - The metadata-defined cascade style.
        lhsTable - The owner table
        lhsColumns - The owner join columns
        nullable - Is the association nullable.
        currentDepth - Current join depth
        Returns:
        type of join to use (JoinType.INNER_JOIN, JoinType.LEFT_OUTER_JOIN, or -1 to indicate no joining.
        Throws:
        MappingException - ??
      • getJoinType

        protected JoinType getJoinType​(AssociationType associationType,
                                       FetchMode config,
                                       PropertyPath path,
                                       java.lang.String lhsTable,
                                       java.lang.String[] lhsColumns,
                                       boolean nullable,
                                       int currentDepth,
                                       CascadeStyle cascadeStyle)
                                throws MappingException
        Determine the appropriate associationType of join (if any) to use to fetch the given association.
        Parameters:
        associationType - The association associationType.
        config - The metadata-defined fetch mode.
        path - The path to the association
        lhsTable - The owner table
        lhsColumns - The owner join columns
        nullable - Is the association nullable.
        currentDepth - Current join depth
        cascadeStyle - The metadata-defined cascade style.
        Returns:
        type of join to use (JoinType.INNER_JOIN, JoinType.LEFT_OUTER_JOIN, or -1 to indicate no joining.
        Throws:
        MappingException - ??
      • getJoinType

        protected JoinType getJoinType​(boolean nullable,
                                       int currentDepth)
        Use an inner join if it is a non-null association and this is the "first" join in a series
      • isTooDeep

        protected boolean isTooDeep​(int currentDepth)
      • isTooManyCollections

        protected boolean isTooManyCollections()
      • isJoinedFetchEnabledInMapping

        protected boolean isJoinedFetchEnabledInMapping​(FetchMode config,
                                                        AssociationType type)
                                                 throws MappingException
        Does the mapping, and Hibernate default semantics, specify that this association should be fetched by outer joining
        Throws:
        MappingException
      • isJoinedFetchEnabled

        protected boolean isJoinedFetchEnabled​(AssociationType type,
                                               FetchMode config,
                                               CascadeStyle cascadeStyle)
        Override on subclasses to enable or suppress joining of certain association types
      • generateTableAlias

        protected java.lang.String generateTableAlias​(int n,
                                                      PropertyPath path,
                                                      Joinable joinable)
      • generateRootAlias

        protected java.lang.String generateRootAlias​(java.lang.String description)
      • isDuplicateAssociation

        protected boolean isDuplicateAssociation​(java.lang.String foreignKeyTable,
                                                 java.lang.String[] foreignKeyColumns)
        Used to detect circularities in the joined graph, note that this method is side-effecty
      • isDuplicateAssociation

        protected boolean isDuplicateAssociation​(java.lang.String lhsTable,
                                                 java.lang.String[] lhsColumnNames,
                                                 AssociationType type)
        Used to detect circularities in the joined graph, note that this method is side-effecty
      • isJoinable

        protected boolean isJoinable​(JoinType joinType,
                                     java.util.Set visitedAssociationKeys,
                                     java.lang.String lhsTable,
                                     java.lang.String[] lhsColumnNames,
                                     AssociationType type,
                                     int depth)
        Should we join this association?
      • orderBy

        protected java.lang.String orderBy​(java.util.List associations,
                                           java.lang.String orderBy)
      • mergeOrderings

        protected static java.lang.String mergeOrderings​(java.lang.String ordering1,
                                                         java.lang.String ordering2)
      • mergeOuterJoins

        protected final JoinFragment mergeOuterJoins​(java.util.List associations)
                                              throws MappingException
        Generate a sequence of LEFT OUTER JOIN clauses for the given associations.
        Throws:
        MappingException
      • countEntityPersisters

        protected static int countEntityPersisters​(java.util.List associations)
                                            throws MappingException
        Count the number of instances of Joinable which are actually also instances of Loadable, or are one-to-many associations
        Throws:
        MappingException
      • countCollectionPersisters

        protected static int countCollectionPersisters​(java.util.List associations)
                                                throws MappingException
        Count the number of instances of Joinable which are actually also instances of PersistentCollection which are being fetched by outer join
        Throws:
        MappingException
      • orderBy

        protected static java.lang.String orderBy​(java.util.List associations)
                                           throws MappingException
        Get the order by string required for collection fetching
        Throws:
        MappingException
      • whereString

        protected java.lang.StringBuilder whereString​(java.lang.String alias,
                                                      java.lang.String[] columnNames,
                                                      int batchSize)
        Render the where condition for a (batch) load by identifier / collection key
      • selectString

        protected final java.lang.String selectString​(java.util.List associations)
                                               throws MappingException
        Generate a select list of columns containing all properties of the entity classes
        Throws:
        MappingException