本文整理了Java中org.hibernate.engine.spi.SessionFactoryImplementor.getQueryPlanCache()
方法的一些代码示例,展示了SessionFactoryImplementor.getQueryPlanCache()
的具体用法。这些代码示例主要来源于Github
/Stackoverflow
/Maven
等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。SessionFactoryImplementor.getQueryPlanCache()
方法的具体详情如下:
包路径:org.hibernate.engine.spi.SessionFactoryImplementor
类名称:SessionFactoryImplementor
方法名:getQueryPlanCache
[英]Access to the cachres of HQL/JPQL and native query plans.
[中]访问HQL/JPQL和本机查询计划的CACHRE。
代码示例来源:origin: hibernate/hibernate-orm
@Override
public QueryPlanCache getQueryPlanCache() {
return delegate.getQueryPlanCache();
}
代码示例来源:origin: hibernate/hibernate-orm
protected NativeSQLQueryPlan getNativeQueryPlan(NativeSQLQuerySpecification spec) throws HibernateException {
return getFactory().getQueryPlanCache().getNativeSQLQueryPlan( spec );
}
代码示例来源:origin: hibernate/hibernate-orm
private boolean isSelect() {
return getProducer().getFactory().getQueryPlanCache()
.getHQLQueryPlan( getQueryString(), false, Collections.<String, Filter>emptyMap() )
.isSelect();
}
代码示例来源:origin: hibernate/hibernate-orm
protected HQLQueryPlan getQueryPlan(String query, boolean shallow) throws HibernateException {
return getFactory().getQueryPlanCache().getHQLQueryPlan( query, shallow, getLoadQueryInfluencers().getEnabledFilters() );
}
代码示例来源:origin: hibernate/hibernate-orm
@SuppressWarnings({"unchecked", "WeakerAccess", "StatementWithEmptyBody"})
protected void resultClassChecking(Class resultClass, org.hibernate.Query hqlQuery) {
final HQLQueryPlan queryPlan = getFactory().getQueryPlanCache().getHQLQueryPlan(
hqlQuery.getQueryString(),
false,
代码示例来源:origin: hibernate/hibernate-orm
@Test
public void testImplicitTupleNotInList() {
final String hql = "from TheEntity e where e.compositeValue not in (:p1,:p2)";
HQLQueryPlan queryPlan = ( (SessionFactoryImplementor) sessionFactory ).getQueryPlanCache()
.getHQLQueryPlan( hql, false, Collections.<String,Filter>emptyMap() );
assertEquals( 1, queryPlan.getSqlStrings().length );
System.out.println( " SQL : " + queryPlan.getSqlStrings()[0] );
assertTrue( queryPlan.getSqlStrings()[0].contains( "<>" ) );
}
代码示例来源:origin: hibernate/hibernate-orm
@Test
public void testImplicitTupleNotEquals() {
final String hql = "from TheEntity e where e.compositeValue <> :p1";
HQLQueryPlan queryPlan = ( (SessionFactoryImplementor) sessionFactory ).getQueryPlanCache()
.getHQLQueryPlan( hql, false, Collections.<String,Filter>emptyMap() );
assertEquals( 1, queryPlan.getSqlStrings().length );
System.out.println( " SQL : " + queryPlan.getSqlStrings()[0] );
assertTrue( queryPlan.getSqlStrings()[0].contains( "<>" ) );
}
代码示例来源:origin: hibernate/hibernate-orm
protected NativeQueryImplementor getNativeQueryImplementor(
String queryString,
boolean isOrdinalParameterZeroBased) {
checkOpen();
checkTransactionSynchStatus();
delayedAfterCompletion();
try {
NativeQueryImpl query = new NativeQueryImpl(
queryString,
false,
this,
getFactory().getQueryPlanCache().getSQLParameterMetadata( queryString, isOrdinalParameterZeroBased )
);
query.setComment( "dynamic native SQL query" );
return query;
}
catch ( RuntimeException he ) {
throw exceptionConverter.convert( he );
}
}
代码示例来源:origin: hibernate/hibernate-orm
@Test
public void testNonDistinctCountOfEntityWithCompositeId() {
// the check here is all based on whether we had commas in the expressions inside the count
final HQLQueryPlan plan = sessionFactory().getQueryPlanCache().getHQLQueryPlan(
"select count(o) from Order o",
false,
Collections.EMPTY_MAP
);
assertEquals( 1, plan.getTranslators().length );
final QueryTranslator translator = plan.getTranslators()[0];
final String generatedSql = translator.getSQLString();
final int countExpressionListStart = generatedSql.indexOf( "count(" );
final int countExpressionListEnd = generatedSql.indexOf( ")", countExpressionListStart );
final String countExpressionFragment = generatedSql.substring( countExpressionListStart+6, countExpressionListEnd+1 );
final boolean hadCommas = countExpressionFragment.contains( "," );
// set up the expectation based on Dialect...
final boolean expectCommas = sessionFactory().getDialect().supportsTupleCounts();
assertEquals( expectCommas, hadCommas );
}
代码示例来源:origin: hibernate/hibernate-orm
private void testMultiJoinAddition(String hql) {
final HQLQueryPlan plan = sessionFactory().getQueryPlanCache().getHQLQueryPlan(
hql,
false,
Collections.EMPTY_MAP
);
assertEquals( 1, plan.getTranslators().length );
final QueryTranslator translator = plan.getTranslators()[0];
final String generatedSql = translator.getSQLString();
int sub1JoinColumnIndex = generatedSql.indexOf( ".base_sub_1" );
assertNotEquals(
"Generated SQL doesn't contain a join for 'base' with 'PolymorphicSub1' via 'base_sub_1':\n" + generatedSql,
-1,
sub1JoinColumnIndex
);
int sub2JoinColumnIndex = generatedSql.indexOf( ".base_sub_2" );
assertNotEquals(
"Generated SQL doesn't contain a join for 'base' with 'PolymorphicSub2' via 'base_sub_2':\n" + generatedSql,
-1,
sub2JoinColumnIndex
);
}
代码示例来源:origin: hibernate/hibernate-orm
@Override
public ScrollableResultsImplementor scrollCustomQuery(CustomQuery customQuery, QueryParameters queryParameters) {
checkOpenOrWaitingForAutoClose();
// checkTransactionSynchStatus();
if ( log.isTraceEnabled() ) {
log.tracev( "Scroll SQL query: {0}", customQuery.getSQL() );
}
CustomLoader loader = getFactory().getQueryPlanCache().getNativeQueryInterpreter().createCustomLoader( customQuery, getFactory() );
autoFlushIfRequired( loader.getQuerySpaces() );
dontFlushFromFind++; //stops flush being called multiple times if this method is recursively called
try {
return loader.scroll( queryParameters, this );
}
finally {
delayedAfterCompletion();
dontFlushFromFind--;
}
}
代码示例来源:origin: hibernate/hibernate-orm
throw new QueryException( "The collection was unreferenced" );
plan = getFactory().getQueryPlanCache().getFilterQueryPlan(
filter,
roleAfterFlush.getRole(),
plan = getFactory().getQueryPlanCache().getFilterQueryPlan(
filter,
roleBeforeFlush.getRole(),
throw new QueryException( "The collection was dereferenced" );
plan = getFactory().getQueryPlanCache().getFilterQueryPlan(
filter,
roleAfterFlush.getRole(),
代码示例来源:origin: hibernate/hibernate-orm
@Override
public List listCustomQuery(CustomQuery customQuery, QueryParameters queryParameters) {
checkOpenOrWaitingForAutoClose();
// checkTransactionSynchStatus();
if ( log.isTraceEnabled() ) {
log.tracev( "SQL query: {0}", customQuery.getSQL() );
}
CustomLoader loader = getFactory().getQueryPlanCache().getNativeQueryInterpreter().createCustomLoader( customQuery, getFactory() );
autoFlushIfRequired( loader.getQuerySpaces() );
dontFlushFromFind++;
boolean success = false;
try {
List results = loader.list( this, queryParameters );
success = true;
return results;
}
finally {
dontFlushFromFind--;
delayedAfterCompletion();
afterOperation( success );
}
}
代码示例来源:origin: hibernate/hibernate-orm
final HQLQueryPlan plan = sessionFactory().getQueryPlanCache().getHQLQueryPlan(
"select count(distinct o) from Order o",
false,
代码示例来源:origin: hibernate/hibernate-orm
@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
);
} );
}
代码示例来源:origin: hibernate/hibernate-orm
@Test
public void testHqlQueryPlanWithEnabledFilter() {
Session s = openSession();
QueryPlanCache cache = ( (SessionImplementor) s ).getFactory().getQueryPlanCache();
代码示例来源:origin: hibernate/hibernate-orm
@Test
public void testHqlQueryPlan() {
Session s = openSession();
QueryPlanCache cache = ( ( SessionImplementor ) s ).getFactory().getQueryPlanCache();
assertTrue( getEnabledFilters( s ).isEmpty() );
HQLQueryPlan plan1 = cache.getHQLQueryPlan( "from Person", false, getEnabledFilters( s ) );
HQLQueryPlan plan2 = cache.getHQLQueryPlan( "from Person where name is null", false, getEnabledFilters( s ) );
HQLQueryPlan plan3 = cache.getHQLQueryPlan( "from Person where name = :name", false, getEnabledFilters( s ) );
HQLQueryPlan plan4 = cache.getHQLQueryPlan( "from Person where name = ?1", false, getEnabledFilters( s ) );
assertNotSame( plan1, plan2 );
assertNotSame( plan1, plan3 );
assertNotSame( plan1, plan4 );
assertNotSame( plan2, plan3 );
assertNotSame( plan2, plan4 );
assertNotSame( plan3, plan4 );
assertSame( plan1, cache.getHQLQueryPlan( "from Person", false, getEnabledFilters( s ) ) );
assertSame( plan2, cache.getHQLQueryPlan( "from Person where name is null", false, getEnabledFilters( s ) ) );
assertSame( plan3, cache.getHQLQueryPlan( "from Person where name = :name", false, getEnabledFilters( s ) ) );
assertSame( plan4, cache.getHQLQueryPlan( "from Person where name = ?1", false, getEnabledFilters( s ) ) );
s.close();
}
代码示例来源:origin: Blazebit/blaze-persistence
private HQLQueryPlan getOriginalQueryPlan(SessionImplementor session, Query query) {
SessionFactoryImplementor sfi = session.getFactory();
org.hibernate.Query hibernateQuery = query.unwrap(org.hibernate.Query.class);
Map<String, TypedValue> namedParams = new HashMap<String, TypedValue>(hibernateAccess.getNamedParams(hibernateQuery));
String queryString = hibernateAccess.expandParameterLists(session, hibernateQuery, namedParams);
return sfi.getQueryPlanCache().getHQLQueryPlan(queryString, false, Collections.EMPTY_MAP);
}
代码示例来源:origin: Blazebit/blaze-persistence
HQLQueryPlan lastQueryPlan = session.getFactory().getQueryPlanCache().getHQLQueryPlan(queryString, false, Collections.EMPTY_MAP);
if (lastQueryPlan.getTranslators().length > 1) {
throw new IllegalArgumentException("No support for multiple translators yet!");
代码示例来源:origin: Blazebit/blaze-persistence
String queryString = hibernateAccess.expandParameterLists(session, hibernateQuery, namedParams);
HQLQueryPlan queryPlan = sfi.getQueryPlanCache().getHQLQueryPlan(queryString, false, Collections.EMPTY_MAP);
内容来源于网络,如有侵权,请联系作者删除!