@Override public QueryImplementor createQuery(String queryString) { checkOpen(); checkTransactionSynchStatus(); delayedAfterCompletion(); try { final QueryImpl query = new QueryImpl( this, getQueryPlan( queryString, false ).getParameterMetadata(), queryString ); query.setComment( queryString ); applyQuerySettingsAndHints( query ); return query; } catch (RuntimeException e) { markForRollbackOnly(); throw exceptionConverter.convert( e ); } }
protected QueryImplementor createQuery(NamedQueryDefinition queryDefinition) { String queryString = queryDefinition.getQueryString(); final QueryImpl query = new QueryImpl( this, getQueryPlan( queryString, false ).getParameterMetadata(), queryString ); query.setHibernateFlushMode( queryDefinition.getFlushMode() ); query.setComment( queryDefinition.getComment() != null ? queryDefinition.getComment() : queryDefinition.getName() ); if ( queryDefinition.getLockOptions() != null ) { query.setLockOptions( queryDefinition.getLockOptions() ); } initQueryFromNamedDefinition( query, queryDefinition ); // applyQuerySettingsAndHints( query ); return query; }
@Test @TestForIssue(jiraKey = "HHH-12413") public void testExpandingQueryStringMultipleTimesWorks() { doInHibernate( this::sessionFactory, session -> { QueryPlanCache cache = ( ( SessionImplementor ) session ).getFactory().getQueryPlanCache(); String queryString = "from Person where name in :names"; HQLQueryPlan plan = cache.getHQLQueryPlan( queryString, false, getEnabledFilters( session ) ); QueryParameterBindings queryParameterBindings = QueryParameterBindingsImpl.from( plan.getParameterMetadata(), (SessionFactoryImplementor) session.getSessionFactory(), false ); queryParameterBindings.getQueryParameterListBinding( "names" ).setBindValues( Arrays.asList( "a", "b" ) ); String actualQueryString = queryParameterBindings.expandListValuedParameters(queryString, (SharedSessionContractImplementor) session); String expectedQueryString = "from Person where name in (:names_0, :names_1)"; assertEquals( expectedQueryString, actualQueryString ); // Expanding the same query again should work as before actualQueryString = queryParameterBindings.expandListValuedParameters(queryString, (SharedSessionContractImplementor) session); assertEquals( expectedQueryString, actualQueryString ); } ); }
@Override public Query createQuery(String queryString) { errorIfClosed(); QueryImpl query = new QueryImpl( queryString, this, getHQLQueryPlan( queryString, false ).getParameterMetadata() ); query.setComment( queryString ); return query; }
@Override public Query createQuery(String queryString) { errorIfClosed(); QueryImpl query = new QueryImpl( queryString, this, getHQLQueryPlan( queryString, false ).getParameterMetadata() ); query.setComment( queryString ); return query; }
nqd.getFlushMode(), this, getHQLQueryPlan( queryString, false ).getParameterMetadata() ); query.setComment( "named HQL query " + queryName );
nqd.getFlushMode(), this, getHQLQueryPlan( queryString, false ).getParameterMetadata() ); query.setComment( "named HQL query " + queryName );