org.hibernate.engine.spi.SessionFactoryImplementor.getQueryPlanCache()方法的使用及代码示例

x33g5p2x  于2022-01-29 转载在 其他  
字(10.4k)|赞(0)|评价(0)|浏览(78)

本文整理了Java中org.hibernate.engine.spi.SessionFactoryImplementor.getQueryPlanCache()方法的一些代码示例,展示了SessionFactoryImplementor.getQueryPlanCache()的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。SessionFactoryImplementor.getQueryPlanCache()方法的具体详情如下:
包路径:org.hibernate.engine.spi.SessionFactoryImplementor
类名称:SessionFactoryImplementor
方法名:getQueryPlanCache

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);

相关文章

微信公众号

最新文章

更多

SessionFactoryImplementor类方法