JPEE를 사용하여 JavaEE에서 'SELECT FOR UPDATE NOWAIT'을 사용하려고합니다. 이다 나는 그것을 할 방법 :JavaEE : 'FOR UP UP UP NOWAIT'을 선택하면 실패 할 때 롤백을위한 JTA 트랜잭션을 표시하지 않습니까?
props.put("javax.persistence.lock.timeout", 0);
em.find(MyEntity.class, id, LockModeType.PESSIMISTIC_READ, props);
이 잘 한 가지를 제외하고 간다 :이 (잠금을 획득하지 못했다) 실패하면 다음 PessimisticLockException 대신 다른 경우에 발생합니다 LockTimeoutException 예 (의 발생합니다 포지티브 타임 아웃이 설정 됨), 트랜잭션 (JTA 트랜잭션)이 롤백으로 표시됩니다.
네이티브 쿼리를 대신 사용해 보았지만 동일한 결과가 나타납니다.
EclipseLink에서 Weblogic 12.1을 사용하고 있습니다 (차이점이없는 TopLink도 시도했습니다).
실행이 실패 할 때 JavaEE에서 JTA 트랜잭션을 롤백으로 표시하지 않고 'SELECT FOR UPDATE NOWAIT'를 실행할 수있는 방법이 있습니까?
어디에서 버그를 기록해야합니까? EclipseLink에서? TopLink? 그리고 이것은 정말로 버그입니까? 사양이 이것에 관해 무엇을 말해야합니까 (나는 아무것도 추측하지 않습니다)? – wafwaf
예, 실제 버그입니다. EclipseLink http://wiki.eclipse.org/EclipseLink/UserGuide/JPA/Basic_JPA_Development/Caching. TopLink를 사용하고 있고 지원이 있다면 Oracle 지원 팀에 문의하십시오. 잠금 픽스 이외에, EclipseLink는 롤백을 강제하는 오류를 피하기 위해 쿼리 힌트 또는 설정을 제공해야한다고 생각합니다. – James
버그를 기록했습니다 : https://bugs.eclipse.org/bugs/show_bug.cgi?id=396266 – wafwaf