我使用下面的查询来使用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,它就可以工作。那么它是由于交易超时吗?
建议我修复这种情况。