Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 减少hibernate中的准备语句计数_Java_Hibernate_Prepared Statement - Fatal编程技术网

Java 减少hibernate中的准备语句计数

Java 减少hibernate中的准备语句计数,java,hibernate,prepared-statement,Java,Hibernate,Prepared Statement,我正在努力进行hibernate准备语句计数。 我正在使用以下JPA条件查询: int count = 30 EntityManager manager = ... CriteriaBuilder builder = manager.getCriteriaBuilder(); CriteriaQuery<String> select = builder.createQuery(String.class); Root<AdministrationParameter> ro

我正在努力进行hibernate准备语句计数。 我正在使用以下JPA条件查询:

int count = 30
EntityManager manager = ...
CriteriaBuilder builder = manager.getCriteriaBuilder();

CriteriaQuery<String> select = builder.createQuery(String.class);
Root<AdministrationParameter> root = select.from(AdministrationParameter.class);
select.select(root.get(AdministrationParameter_.value));

ParameterExpression<String> peF1 = builder.parameter(AdministrationParameter_.context.getBindableJavaType(), "f1");
ParameterExpression<String> peF2 = builder.parameter(AdministrationParameter_.parameter.getBindableJavaType(), "f2");

Predicate p1 = builder.equal(root.get(AdministrationParameter_.context), peF1);
Predicate p2 = builder.equal(root.get(AdministrationParameter_.parameter), peF2);

select.where(p1, p2);

List<String> results = Collections.emptyList();
TypedQuery<String> query = manager.createQuery(select);

for (int i = 0; i < count; i++) {
    query.setParameter(peF1, administrationParameterTypeInterface.getContext());
    query.setParameter(peF2, administrationParameterTypeInterface.getParameter());
    query.getResultList();
}
根据javadoc,statistics.getPrepareStatementCount()是“获取的已准备语句的数量”


它不应该是1吗?

您使用的是哪个Hibernate版本?这可能是新版本中已修复的错误。如果更新没有帮助,请在issue tracker()中创建一个问题,并使用测试用例()复制该问题。

好提示。我使用此操作创建了一个问题
EntityManagerFactory factory = ...;
SessionFactory sessionFactory = factory.unwrap(SessionFactory.class);
statistics = sessionFactory.getStatistics();
Statistics statistics = statistics.setStatisticsEnabled(true);

...running the query above...

System.out.println("prepared statement count: " + statistics.getPrepareStatementCount());//is 30
System.out.println("query cache hit count: " + statistics.getQueryCacheHitCount());//0
System.out.println("query cache miss count: " + statistics.getQueryCacheMissCount());//0
System.out.println("query execution count: " + statistics.getQueryExecutionCount());//30