以下のクエリを使用して、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. internal.TransactionImpl.setRollbackOnly(TransactionImpl.java:143) at org.springframework.orm.jpa.JpaTransactionManager$JpaTransactionObject.setRollbackOnly(JpaTransactionManager.java:684)
IN 句で最大 550 個の ID を渡すと機能します。トランザクションのタイムアウトが原因ですか?
このシナリオを修正するよう提案してください。