Search in sources :

Example 16 with SqmSelectStatement

use of org.hibernate.query.sqm.tree.select.SqmSelectStatement in project hibernate-orm by hibernate.

the class EntityJoinTest method testNoImpliedJoinGeneratedForEqualityComparison.

@Test
@TestForIssue(jiraKey = "HHH-11538")
public void testNoImpliedJoinGeneratedForEqualityComparison(SessionFactoryScope scope) {
    final String qry = "select r.id, cust.name " + "from FinancialRecord r " + "	join Customer cust on r.customer = cust" + "   order by r.id";
    scope.inTransaction((session) -> {
        final SessionFactoryImplementor factory = scope.getSessionFactory();
        final EntityMappingType customerEntityDescriptor = factory.getRuntimeMetamodels().getMappingMetamodel().findEntityDescriptor(Customer.class);
        final QueryEngine queryEngine = factory.getQueryEngine();
        final HqlTranslator hqlTranslator = queryEngine.getHqlTranslator();
        final SqmTranslatorFactory sqmTranslatorFactory = queryEngine.getSqmTranslatorFactory();
        final SqmStatement<Object> sqm = hqlTranslator.translate(qry);
        final SqmTranslator<SelectStatement> selectTranslator = sqmTranslatorFactory.createSelectTranslator((SqmSelectStatement<?>) sqm, QueryOptions.NONE, DomainParameterXref.empty(), QueryParameterBindings.NO_PARAM_BINDINGS, LoadQueryInfluencers.NONE, factory, true);
        final SqmTranslation<SelectStatement> sqmTranslation = selectTranslator.translate();
        final SelectStatement sqlAst = sqmTranslation.getSqlAst();
        final List<TableGroup> roots = sqlAst.getQuerySpec().getFromClause().getRoots();
        assertThat(roots.size(), is(1));
        final TableGroup rootTableGroup = roots.get(0);
        assertThat(rootTableGroup.getTableGroupJoins().size(), is(1));
        final TableGroupJoin tableGroupJoin = rootTableGroup.getTableGroupJoins().get(0);
        assertThat(tableGroupJoin.getJoinedGroup().getModelPart(), is(customerEntityDescriptor));
    });
}
Also used : TableGroup(org.hibernate.sql.ast.tree.from.TableGroup) SessionFactoryImplementor(org.hibernate.engine.spi.SessionFactoryImplementor) QueryEngine(org.hibernate.query.spi.QueryEngine) TableGroupJoin(org.hibernate.sql.ast.tree.from.TableGroupJoin) SqmSelectStatement(org.hibernate.query.sqm.tree.select.SqmSelectStatement) SelectStatement(org.hibernate.sql.ast.tree.select.SelectStatement) HqlTranslator(org.hibernate.query.hql.HqlTranslator) EntityMappingType(org.hibernate.metamodel.mapping.EntityMappingType) SqmTranslatorFactory(org.hibernate.query.sqm.sql.SqmTranslatorFactory) Test(org.junit.jupiter.api.Test) TestForIssue(org.hibernate.testing.TestForIssue)

Example 17 with SqmSelectStatement

use of org.hibernate.query.sqm.tree.select.SqmSelectStatement in project hibernate-orm by hibernate.

the class AbstractResultTests method interpret.

protected SelectStatement interpret(String hql, QueryParameterBindings parameterBindings, SessionFactoryImplementor sessionFactory) {
    final QueryEngine queryEngine = sessionFactory.getQueryEngine();
    final SqmSelectStatement<?> sqm = (SqmSelectStatement<?>) queryEngine.getHqlTranslator().translate(hql);
    final SqmTranslatorFactory sqmTranslatorFactory = queryEngine.getSqmTranslatorFactory();
    final SqmTranslator<SelectStatement> sqmConverter = sqmTranslatorFactory.createSelectTranslator(sqm, QueryOptions.NONE, DomainParameterXref.from(sqm), parameterBindings, LoadQueryInfluencers.NONE, sessionFactory, true);
    return sqmConverter.translate().getSqlAst();
}
Also used : SqmSelectStatement(org.hibernate.query.sqm.tree.select.SqmSelectStatement) SelectStatement(org.hibernate.sql.ast.tree.select.SelectStatement) SqmSelectStatement(org.hibernate.query.sqm.tree.select.SqmSelectStatement) QueryEngine(org.hibernate.query.spi.QueryEngine) SqmTranslatorFactory(org.hibernate.query.sqm.sql.SqmTranslatorFactory)

Aggregations

SqmSelectStatement (org.hibernate.query.sqm.tree.select.SqmSelectStatement)17 SelectStatement (org.hibernate.sql.ast.tree.select.SelectStatement)9 ArrayList (java.util.ArrayList)4 SqmQueryImplementor (org.hibernate.query.hql.spi.SqmQueryImplementor)4 StandardSqmTranslator (org.hibernate.query.sqm.sql.internal.StandardSqmTranslator)4 TableGroup (org.hibernate.sql.ast.tree.from.TableGroup)4 HibernateException (org.hibernate.HibernateException)3 LoadQueryInfluencers (org.hibernate.engine.spi.LoadQueryInfluencers)3 SessionFactoryImplementor (org.hibernate.engine.spi.SessionFactoryImplementor)3 EntityDomainType (org.hibernate.metamodel.model.domain.EntityDomainType)3 QueryEngine (org.hibernate.query.spi.QueryEngine)3 QueryOptions (org.hibernate.query.spi.QueryOptions)3 SqmQueryPart (org.hibernate.query.sqm.tree.select.SqmQueryPart)3 SqlSelection (org.hibernate.sql.ast.spi.SqlSelection)3 SelectClause (org.hibernate.sql.ast.tree.select.SelectClause)3 JdbcSelect (org.hibernate.sql.exec.spi.JdbcSelect)3 List (java.util.List)2 Map (java.util.Map)2 Session (org.hibernate.Session)2 HqlParser (org.hibernate.grammars.hql.HqlParser)2