0

我使用下面的查询来使用hibernate IN子句获取数据,

select emp from Employee emp where emp.employeeParentCompanyDetails in (:empParentCompDetails)

TypedQuery<Employee> query = entityManager.createQuery(fetchQuery,Employee.class);
                query.setParameter("empParentCompDetails", <more than 650 params>);
                List<Employee> employeeDetailss = query.getResultList();

和方法是注释

@Transactional(value = "JpaTxn", readOnly = true, timeout = 900)

例外:

16:44:30.462 [主]调试 org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl

  • 标记为仅回滚的 JDBC 事务(为堆栈跟踪提供了异常)

java.lang.Exception:异常只是为了在 org.hibernate.engine.transaction 的 org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl$TransactionDriverControlImpl.markRollbackOnly(JdbcResourceLocalTransactionCoordinatorImpl.java:271) 处提供堆栈跟踪。 internal.TransactionImpl.setRollbackOnly(TransactionImpl.java:143) at org.springframework.orm.jpa.JpaTransactionManager$JpaTransactionObject.setRollbackOnly(JpaTransactionManager.java:684)

如果我在 IN 子句中传递多达 550 个 id,它就可以工作。那么它是由于交易超时吗?

建议我修复这种情况。

4

0 回答 0