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. internal.TransactionImpl.setRollbackOnly(TransactionImpl.java:143) at org.springframework.orm.jpa.JpaTransactionManager$JpaTransactionObject.setRollbackOnly(JpaTransactionManager.java:684)

IN 句で最大 550 個の ID を渡すと機能します。トランザクションのタイムアウトが原因ですか?

このシナリオを修正するよう提案してください。

4

0 に答える 0