Search in sources :

Example 1 with SelectStatement

use of org.hibernate.sql.ast.tree.select.SelectStatement in project hibernate-orm by hibernate.

the class CriteriaEntityGraphTest method testBasicElementCollections.

@ParameterizedTest
@EnumSource(GraphSemantic.class)
void testBasicElementCollections(GraphSemantic graphSemantic) {
    scope.inTransaction(session -> {
        final RootGraphImplementor<Dog> eg = session.createEntityGraph(Dog.class);
        eg.addAttributeNodes("favorites");
        final SelectStatement sqlAst = buildSqlSelectAst(Dog.class, eg, graphSemantic, session);
        // Check the from-clause
        assertPluralAttributeJoinedGroup(sqlAst, "favorites", tableGroup -> {
        });
    });
}
Also used : SqmSelectStatement(org.hibernate.query.sqm.tree.select.SqmSelectStatement) SelectStatement(org.hibernate.sql.ast.tree.select.SelectStatement) EnumSource(org.junit.jupiter.params.provider.EnumSource) ParameterizedTest(org.junit.jupiter.params.ParameterizedTest)

Example 2 with SelectStatement

use of org.hibernate.sql.ast.tree.select.SelectStatement in project hibernate-orm by hibernate.

the class CriteriaEntityGraphTest method testEmbeddedCollection.

@ParameterizedTest
@EnumSource(GraphSemantic.class)
void testEmbeddedCollection(GraphSemantic graphSemantic) {
    scope.inTransaction(session -> {
        final RootGraphImplementor<ExpressCompany> eg = session.createEntityGraph(ExpressCompany.class);
        eg.addAttributeNodes("shipAddresses");
        final SelectStatement sqlAst = buildSqlSelectAst(ExpressCompany.class, eg, graphSemantic, session);
        // Check the from-clause
        assertPluralAttributeJoinedGroup(sqlAst, "shipAddresses", tableGroup -> {
            if (graphSemantic == GraphSemantic.LOAD) {
                assertThat(tableGroup.getTableGroupJoins(), isEmpty());
                assertThat(tableGroup.getNestedTableGroupJoins(), hasSize(1));
                final TableGroup compositeTableGroup = tableGroup.getNestedTableGroupJoins().iterator().next().getJoinedGroup();
                assertThat(compositeTableGroup, instanceOf(StandardVirtualTableGroup.class));
                assertThat(compositeTableGroup.getTableGroupJoins(), hasSize(1));
                assertThat(compositeTableGroup.getNestedTableGroupJoins(), isEmpty());
                final TableGroup countryTableGroup = compositeTableGroup.getTableGroupJoins().iterator().next().getJoinedGroup();
                assertThat(countryTableGroup.getModelPart().getPartName(), is("country"));
                assertThat(countryTableGroup.getTableGroupJoins(), isEmpty());
                assertThat(countryTableGroup.getNestedTableGroupJoins(), isEmpty());
            } else {
                assertThat(tableGroup.getTableGroupJoins(), isEmpty());
                assertThat(tableGroup.getNestedTableGroupJoins(), hasSize(1));
                final TableGroup compositeTableGroup = CollectionUtils.getOnlyElement(tableGroup.getNestedTableGroupJoins()).getJoinedGroup();
                assertThat(compositeTableGroup, instanceOf(StandardVirtualTableGroup.class));
                assertThat(compositeTableGroup.getTableGroupJoins(), isEmpty());
                assertThat(compositeTableGroup.getNestedTableGroupJoins(), isEmpty());
            }
        });
    });
}
Also used : SqmSelectStatement(org.hibernate.query.sqm.tree.select.SqmSelectStatement) SelectStatement(org.hibernate.sql.ast.tree.select.SelectStatement) LazyTableGroup(org.hibernate.sql.ast.tree.from.LazyTableGroup) StandardVirtualTableGroup(org.hibernate.sql.ast.tree.from.StandardVirtualTableGroup) TableGroup(org.hibernate.sql.ast.tree.from.TableGroup) StandardVirtualTableGroup(org.hibernate.sql.ast.tree.from.StandardVirtualTableGroup) EnumSource(org.junit.jupiter.params.provider.EnumSource) ParameterizedTest(org.junit.jupiter.params.ParameterizedTest)

Example 3 with SelectStatement

use of org.hibernate.sql.ast.tree.select.SelectStatement in project hibernate-orm by hibernate.

the class CriteriaEntityGraphTest method buildSqlSelectAst.

private <T> SelectStatement buildSqlSelectAst(Class<T> entityType, RootGraphImplementor<T> entityGraph, GraphSemantic mode, SessionImplementor session) {
    final LoadQueryInfluencers loadQueryInfluencers = new LoadQueryInfluencers(session.getSessionFactory());
    final CriteriaBuilder criteriaBuilder = session.getCriteriaBuilder();
    CriteriaQuery<T> criteriaQuery = criteriaBuilder.createQuery(entityType);
    criteriaQuery.select(criteriaQuery.from(entityType));
    final QueryImplementor<T> query = session.createQuery(criteriaQuery);
    final SqmQueryImplementor<String> hqlQuery = (SqmQueryImplementor<String>) query;
    hqlQuery.applyGraph(entityGraph, mode);
    final SqmSelectStatement<String> sqmStatement = (SqmSelectStatement<String>) hqlQuery.getSqmStatement();
    final StandardSqmTranslator<SelectStatement> sqmConverter = new StandardSqmTranslator<>(sqmStatement, hqlQuery.getQueryOptions(), ((QuerySqmImpl<?>) hqlQuery).getDomainParameterXref(), query.getParameterBindings(), loadQueryInfluencers, session.getSessionFactory(), true);
    final SqmTranslation<SelectStatement> sqmInterpretation = sqmConverter.translate();
    return sqmInterpretation.getSqlAst();
}
Also used : CriteriaBuilder(jakarta.persistence.criteria.CriteriaBuilder) SqmSelectStatement(org.hibernate.query.sqm.tree.select.SqmSelectStatement) LoadQueryInfluencers(org.hibernate.engine.spi.LoadQueryInfluencers) SqmSelectStatement(org.hibernate.query.sqm.tree.select.SqmSelectStatement) SelectStatement(org.hibernate.sql.ast.tree.select.SelectStatement) SqmQueryImplementor(org.hibernate.query.hql.spi.SqmQueryImplementor) StandardSqmTranslator(org.hibernate.query.sqm.sql.internal.StandardSqmTranslator)

Example 4 with SelectStatement

use of org.hibernate.sql.ast.tree.select.SelectStatement in project hibernate-orm by hibernate.

the class CriteriaEntityGraphTest method testFetchSemanticsWithDeepSubgraph.

@Test
void testFetchSemanticsWithDeepSubgraph() {
    scope.inTransaction(session -> {
        final RootGraphImplementor<Cat> eg = session.createEntityGraph(Cat.class);
        eg.addSubgraph("owner", Person.class).addSubgraph("company", ExpressCompany.class);
        final SelectStatement sqlAst = buildSqlSelectAst(Cat.class, eg, GraphSemantic.FETCH, session);
        // Check the from-clause
        assertEntityValuedJoinedGroup(sqlAst, "owner", Person.class, tableGroup -> {
            List<TableGroupJoin> tableGroupJoins = tableGroup.getTableGroupJoins();
            Map<String, Class<? extends TableGroup>> tableGroupByName = tableGroupJoins.stream().map(TableGroupJoin::getJoinedGroup).collect(Collectors.toMap(tg -> tg.getModelPart().getPartName(), TableGroup::getClass));
            Map<String, Class<? extends TableGroup>> expectedTableGroupByName = new HashMap<>();
            expectedTableGroupByName.put("homeAddress", StandardVirtualTableGroup.class);
            expectedTableGroupByName.put("company", LazyTableGroup.class);
            assertThat(tableGroupByName, is(expectedTableGroupByName));
        });
        // Check the domain-result graph
        assertDomainResult(sqlAst, Cat.class, "owner", Person.class, entityFetch -> {
            assertThat(entityFetch, instanceOf(EntityFetchJoinedImpl.class));
            final EntityResult ownerEntityResult = ((EntityFetchJoinedImpl) entityFetch).getEntityResult();
            final Map<String, Class<? extends Fetch>> fetchClassByAttributeName = ownerEntityResult.getFetches().stream().collect(Collectors.toMap(fetch -> fetch.getFetchedMapping().getPartName(), Fetch::getClass));
            final Map<String, Class<? extends Fetch>> expectedFetchClassByAttributeName = new HashMap<>();
            expectedFetchClassByAttributeName.put("homeAddress", EmbeddableFetchImpl.class);
            expectedFetchClassByAttributeName.put("pets", DelayedCollectionFetch.class);
            expectedFetchClassByAttributeName.put("company", EntityFetchJoinedImpl.class);
            assertThat(fetchClassByAttributeName, is(expectedFetchClassByAttributeName));
            Fetchable fetchable = getFetchable("company", Person.class);
            final Fetch companyFetch = ownerEntityResult.findFetch(fetchable);
            List<Fetch> fetches = ownerEntityResult.getFetches();
            assertThat(companyFetch, notNullValue());
            final EntityResult companyEntityResult = ((EntityFetchJoinedImpl) companyFetch).getEntityResult();
            assertThat(companyEntityResult.getFetches(), hasSize(1));
            final Fetch shipAddressesFetch = companyEntityResult.getFetches().get(0);
            assertThat(shipAddressesFetch.getFetchedMapping().getPartName(), is("shipAddresses"));
            assertThat(shipAddressesFetch, instanceOf(DelayedCollectionFetch.class));
        });
    });
}
Also used : CoreMatchers.is(org.hamcrest.CoreMatchers.is) Entity(jakarta.persistence.Entity) AssignableMatcher.assignableTo(org.hibernate.testing.hamcrest.AssignableMatcher.assignableTo) EntityPersister(org.hibernate.persister.entity.EntityPersister) GraphSemantic(org.hibernate.graph.GraphSemantic) DelayedCollectionFetch(org.hibernate.sql.results.graph.collection.internal.DelayedCollectionFetch) TableGroupJoin(org.hibernate.sql.ast.tree.from.TableGroupJoin) EntityValuedModelPart(org.hibernate.metamodel.mapping.EntityValuedModelPart) CoreMatchers.notNullValue(org.hamcrest.CoreMatchers.notNullValue) CoreMatchers.instanceOf(org.hamcrest.CoreMatchers.instanceOf) Assert.assertThat(org.junit.Assert.assertThat) PluralAttributeMapping(org.hibernate.metamodel.mapping.PluralAttributeMapping) TestForIssue(org.hibernate.testing.TestForIssue) SqmQueryImplementor(org.hibernate.query.hql.spi.SqmQueryImplementor) SessionFactoryScopeAware(org.hibernate.testing.orm.junit.SessionFactoryScopeAware) Map(java.util.Map) EntityResult(org.hibernate.sql.results.graph.entity.EntityResult) FetchType(jakarta.persistence.FetchType) Fetchable(org.hibernate.sql.results.graph.Fetchable) EntityDelayedFetchImpl(org.hibernate.sql.results.graph.entity.internal.EntityDelayedFetchImpl) SqmSelectStatement(org.hibernate.query.sqm.tree.select.SqmSelectStatement) CollectionUtils(org.junit.platform.commons.util.CollectionUtils) LazyTableGroup(org.hibernate.sql.ast.tree.from.LazyTableGroup) Collection(java.util.Collection) DomainResult(org.hibernate.sql.results.graph.DomainResult) Set(java.util.Set) Id(jakarta.persistence.Id) DomainModel(org.hibernate.testing.orm.junit.DomainModel) QuerySqmImpl(org.hibernate.query.sqm.internal.QuerySqmImpl) Collectors(java.util.stream.Collectors) EmbeddableFetchImpl(org.hibernate.sql.results.graph.embeddable.internal.EmbeddableFetchImpl) SelectStatement(org.hibernate.sql.ast.tree.select.SelectStatement) Test(org.junit.jupiter.api.Test) LoadQueryInfluencers(org.hibernate.engine.spi.LoadQueryInfluencers) List(java.util.List) SessionImplementor(org.hibernate.engine.spi.SessionImplementor) FromClause(org.hibernate.sql.ast.tree.from.FromClause) EmbeddedAttributeMapping(org.hibernate.metamodel.mapping.internal.EmbeddedAttributeMapping) OneToMany(jakarta.persistence.OneToMany) ManyToOne(jakarta.persistence.ManyToOne) HashMap(java.util.HashMap) EnumSource(org.junit.jupiter.params.provider.EnumSource) Embedded(jakarta.persistence.Embedded) RootGraphImplementor(org.hibernate.graph.spi.RootGraphImplementor) QueryImplementor(org.hibernate.query.spi.QueryImplementor) CollectionMatchers.hasSize(org.hibernate.testing.hamcrest.CollectionMatchers.hasSize) StandardSqmTranslator(org.hibernate.query.sqm.sql.internal.StandardSqmTranslator) Embeddable(jakarta.persistence.Embeddable) CollectionMatchers.isEmpty(org.hibernate.testing.hamcrest.CollectionMatchers.isEmpty) ElementCollection(jakarta.persistence.ElementCollection) SqmTranslation(org.hibernate.query.sqm.sql.SqmTranslation) Fetch(org.hibernate.sql.results.graph.Fetch) Consumer(java.util.function.Consumer) EntityFetch(org.hibernate.sql.results.graph.entity.EntityFetch) ParameterizedTest(org.junit.jupiter.params.ParameterizedTest) CriteriaQuery(jakarta.persistence.criteria.CriteriaQuery) StandardVirtualTableGroup(org.hibernate.sql.ast.tree.from.StandardVirtualTableGroup) SessionFactoryScope(org.hibernate.testing.orm.junit.SessionFactoryScope) CriteriaBuilder(jakarta.persistence.criteria.CriteriaBuilder) AttributeMapping(org.hibernate.metamodel.mapping.AttributeMapping) SessionFactory(org.hibernate.testing.orm.junit.SessionFactory) TableGroup(org.hibernate.sql.ast.tree.from.TableGroup) EntityFetchJoinedImpl(org.hibernate.sql.results.graph.entity.internal.EntityFetchJoinedImpl) EntityFetchJoinedImpl(org.hibernate.sql.results.graph.entity.internal.EntityFetchJoinedImpl) Fetchable(org.hibernate.sql.results.graph.Fetchable) LazyTableGroup(org.hibernate.sql.ast.tree.from.LazyTableGroup) StandardVirtualTableGroup(org.hibernate.sql.ast.tree.from.StandardVirtualTableGroup) TableGroup(org.hibernate.sql.ast.tree.from.TableGroup) HashMap(java.util.HashMap) EntityResult(org.hibernate.sql.results.graph.entity.EntityResult) TableGroupJoin(org.hibernate.sql.ast.tree.from.TableGroupJoin) DelayedCollectionFetch(org.hibernate.sql.results.graph.collection.internal.DelayedCollectionFetch) Fetch(org.hibernate.sql.results.graph.Fetch) EntityFetch(org.hibernate.sql.results.graph.entity.EntityFetch) SqmSelectStatement(org.hibernate.query.sqm.tree.select.SqmSelectStatement) SelectStatement(org.hibernate.sql.ast.tree.select.SelectStatement) DelayedCollectionFetch(org.hibernate.sql.results.graph.collection.internal.DelayedCollectionFetch) Test(org.junit.jupiter.api.Test) ParameterizedTest(org.junit.jupiter.params.ParameterizedTest)

Example 5 with SelectStatement

use of org.hibernate.sql.ast.tree.select.SelectStatement in project hibernate-orm by hibernate.

the class EntityGraphLoadPlanBuilderTest method testFetchLoadPlanBuildingWithDeepSubgraph.

@Test
void testFetchLoadPlanBuildingWithDeepSubgraph() {
    scope.inTransaction(em -> {
        final RootGraphImplementor<Cat> eg = em.createEntityGraph(Cat.class);
        eg.addSubgraph("owner", Person.class).addSubgraph("company", ExpressCompany.class);
        final SelectStatement sqlAst = buildSqlSelectAst(Cat.class, eg, GraphSemantic.FETCH, scope);
        // Check the from-clause
        assertEntityValuedJoinedGroup(sqlAst, "owner", Person.class, tableGroup -> {
            List<TableGroupJoin> tableGroupJoins = tableGroup.getTableGroupJoins();
            Map<String, Class<? extends TableGroup>> tableGroupByName = tableGroupJoins.stream().map(TableGroupJoin::getJoinedGroup).collect(Collectors.toMap(tg -> tg.getModelPart().getPartName(), TableGroup::getClass));
            Map<String, Class<? extends TableGroup>> expectedTableGroupByName = new HashMap<>();
            expectedTableGroupByName.put("homeAddress", StandardVirtualTableGroup.class);
            expectedTableGroupByName.put("company", LazyTableGroup.class);
            assertThat(tableGroupByName, is(expectedTableGroupByName));
        });
        // Check the domain-result graph
        assertDomainResult(sqlAst, Cat.class, "owner", Person.class, entityFetch -> {
            assertThat(entityFetch, instanceOf(EntityFetchJoinedImpl.class));
            final EntityResult ownerEntityResult = ((EntityFetchJoinedImpl) entityFetch).getEntityResult();
            final Map<String, Class<? extends Fetch>> fetchClassByAttributeName = ownerEntityResult.getFetches().stream().collect(Collectors.toMap(fetch -> fetch.getFetchedMapping().getPartName(), Fetch::getClass));
            final Map<String, Class<? extends Fetch>> expectedFetchClassByAttributeName = new HashMap<>();
            expectedFetchClassByAttributeName.put("homeAddress", EmbeddableFetchImpl.class);
            expectedFetchClassByAttributeName.put("pets", DelayedCollectionFetch.class);
            expectedFetchClassByAttributeName.put("company", EntityFetchJoinedImpl.class);
            assertThat(fetchClassByAttributeName, is(expectedFetchClassByAttributeName));
            Fetchable fetchable = getFetchable("company", Person.class);
            final Fetch companyFetch = ownerEntityResult.findFetch(fetchable);
            assertThat(companyFetch, notNullValue());
            final EntityResult companyEntityResult = ((EntityFetchJoinedImpl) companyFetch).getEntityResult();
            assertThat(companyEntityResult.getFetches(), hasSize(1));
            final Fetch shipAddressesFetch = companyEntityResult.getFetches().get(0);
            assertThat(shipAddressesFetch.getFetchedMapping().getPartName(), is("shipAddresses"));
            assertThat(shipAddressesFetch, instanceOf(DelayedCollectionFetch.class));
        });
    });
}
Also used : CoreMatchers.is(org.hamcrest.CoreMatchers.is) Entity(jakarta.persistence.Entity) AssignableMatcher.assignableTo(org.hibernate.testing.hamcrest.AssignableMatcher.assignableTo) EntityPersister(org.hibernate.persister.entity.EntityPersister) GraphSemantic(org.hibernate.graph.GraphSemantic) DelayedCollectionFetch(org.hibernate.sql.results.graph.collection.internal.DelayedCollectionFetch) TableGroupJoin(org.hibernate.sql.ast.tree.from.TableGroupJoin) EntityValuedModelPart(org.hibernate.metamodel.mapping.EntityValuedModelPart) CoreMatchers.notNullValue(org.hamcrest.CoreMatchers.notNullValue) CoreMatchers.instanceOf(org.hamcrest.CoreMatchers.instanceOf) Assert.assertThat(org.junit.Assert.assertThat) PluralAttributeMapping(org.hibernate.metamodel.mapping.PluralAttributeMapping) TestForIssue(org.hibernate.testing.TestForIssue) SessionFactoryScopeAware(org.hibernate.testing.orm.junit.SessionFactoryScopeAware) Map(java.util.Map) EntityResult(org.hibernate.sql.results.graph.entity.EntityResult) FetchType(jakarta.persistence.FetchType) Fetchable(org.hibernate.sql.results.graph.Fetchable) EntityDelayedFetchImpl(org.hibernate.sql.results.graph.entity.internal.EntityDelayedFetchImpl) LockOptions(org.hibernate.LockOptions) CollectionUtils(org.junit.platform.commons.util.CollectionUtils) LazyTableGroup(org.hibernate.sql.ast.tree.from.LazyTableGroup) Collection(java.util.Collection) DomainResult(org.hibernate.sql.results.graph.DomainResult) Set(java.util.Set) Id(jakarta.persistence.Id) DomainModel(org.hibernate.testing.orm.junit.DomainModel) Collectors(java.util.stream.Collectors) EmbeddableFetchImpl(org.hibernate.sql.results.graph.embeddable.internal.EmbeddableFetchImpl) SelectStatement(org.hibernate.sql.ast.tree.select.SelectStatement) Test(org.junit.jupiter.api.Test) LoadQueryInfluencers(org.hibernate.engine.spi.LoadQueryInfluencers) List(java.util.List) FromClause(org.hibernate.sql.ast.tree.from.FromClause) EmbeddedAttributeMapping(org.hibernate.metamodel.mapping.internal.EmbeddedAttributeMapping) OneToMany(jakarta.persistence.OneToMany) ManyToOne(jakarta.persistence.ManyToOne) HashMap(java.util.HashMap) EnumSource(org.junit.jupiter.params.provider.EnumSource) Embedded(jakarta.persistence.Embedded) RootGraphImplementor(org.hibernate.graph.spi.RootGraphImplementor) CollectionMatchers.hasSize(org.hibernate.testing.hamcrest.CollectionMatchers.hasSize) LoaderSelectBuilder(org.hibernate.loader.ast.internal.LoaderSelectBuilder) Embeddable(jakarta.persistence.Embeddable) CollectionMatchers.isEmpty(org.hibernate.testing.hamcrest.CollectionMatchers.isEmpty) ElementCollection(jakarta.persistence.ElementCollection) Fetch(org.hibernate.sql.results.graph.Fetch) Consumer(java.util.function.Consumer) EntityFetch(org.hibernate.sql.results.graph.entity.EntityFetch) ParameterizedTest(org.junit.jupiter.params.ParameterizedTest) StandardVirtualTableGroup(org.hibernate.sql.ast.tree.from.StandardVirtualTableGroup) SessionFactoryScope(org.hibernate.testing.orm.junit.SessionFactoryScope) AttributeMapping(org.hibernate.metamodel.mapping.AttributeMapping) SessionFactory(org.hibernate.testing.orm.junit.SessionFactory) TableGroup(org.hibernate.sql.ast.tree.from.TableGroup) EffectiveEntityGraph(org.hibernate.engine.spi.EffectiveEntityGraph) EntityFetchJoinedImpl(org.hibernate.sql.results.graph.entity.internal.EntityFetchJoinedImpl) EntityFetchJoinedImpl(org.hibernate.sql.results.graph.entity.internal.EntityFetchJoinedImpl) Fetchable(org.hibernate.sql.results.graph.Fetchable) LazyTableGroup(org.hibernate.sql.ast.tree.from.LazyTableGroup) StandardVirtualTableGroup(org.hibernate.sql.ast.tree.from.StandardVirtualTableGroup) TableGroup(org.hibernate.sql.ast.tree.from.TableGroup) HashMap(java.util.HashMap) EntityResult(org.hibernate.sql.results.graph.entity.EntityResult) TableGroupJoin(org.hibernate.sql.ast.tree.from.TableGroupJoin) DelayedCollectionFetch(org.hibernate.sql.results.graph.collection.internal.DelayedCollectionFetch) Fetch(org.hibernate.sql.results.graph.Fetch) EntityFetch(org.hibernate.sql.results.graph.entity.EntityFetch) SelectStatement(org.hibernate.sql.ast.tree.select.SelectStatement) DelayedCollectionFetch(org.hibernate.sql.results.graph.collection.internal.DelayedCollectionFetch) Test(org.junit.jupiter.api.Test) ParameterizedTest(org.junit.jupiter.params.ParameterizedTest)

Aggregations

SelectStatement (org.hibernate.sql.ast.tree.select.SelectStatement)49 TableGroup (org.hibernate.sql.ast.tree.from.TableGroup)24 ArrayList (java.util.ArrayList)18 SqmSelectStatement (org.hibernate.query.sqm.tree.select.SqmSelectStatement)18 JdbcSelect (org.hibernate.sql.exec.spi.JdbcSelect)15 ParameterizedTest (org.junit.jupiter.params.ParameterizedTest)15 EnumSource (org.junit.jupiter.params.provider.EnumSource)15 SessionFactoryImplementor (org.hibernate.engine.spi.SessionFactoryImplementor)14 JdbcServices (org.hibernate.engine.jdbc.spi.JdbcServices)13 JdbcParameter (org.hibernate.sql.ast.tree.expression.JdbcParameter)13 JdbcParameterBindings (org.hibernate.sql.exec.spi.JdbcParameterBindings)13 DomainResult (org.hibernate.sql.results.graph.DomainResult)13 PluralAttributeMapping (org.hibernate.metamodel.mapping.PluralAttributeMapping)12 Test (org.junit.jupiter.api.Test)12 List (java.util.List)11 TableGroupJoin (org.hibernate.sql.ast.tree.from.TableGroupJoin)11 QuerySpec (org.hibernate.sql.ast.tree.select.QuerySpec)11 Map (java.util.Map)9 EntityPersister (org.hibernate.persister.entity.EntityPersister)9 LazyTableGroup (org.hibernate.sql.ast.tree.from.LazyTableGroup)9