나는 Hibernate에서 영구적 인 hibernate managed @entity Obj를 가지고 있는데, 이는 id, fieldA, fieldB 필드를 포함한다.HibernateOptimisticLockingFailureException을 피할 수있는 방법이 있습니까?
일부 클래스에는 updateA() 및 updateB()라는 두 가지 트랜잭션 메소드가 있습니다.
updateA()는 ID로 Obj를 얻고 처리하고 fieldA를 업데이트합니다.
updateB는 fieldB와 동일합니다.
또한 지속적으로 요청하는 두 개의 클라이언트가 있습니다. 한 클라이언트는 항상 updateA()를 호출하는 요청을 만들고 다른 클라이언트는 항상 updateB()를 호출합니다.
둘 다 기존 Obj의 동일한 ID를 전달합니다.
HibernateOptimisticLockingFailureException이 발생하지 않거나, 각 메소드가 다른 필드를 업데이트한다는 사실을 고려하여 성공적으로 처리하면 HibernateOptimisticLockingFailureException을 피할 수있는 방법이 있습니까? 병합 같은 거?
updateA()를 호출하는 스레드는 실제로 updateA()와 비슷한 다른 트랜잭션 방식을 호출하지만 아무 것도 fieldB를 업데이트하지 않습니다.
처음에는 예외를 catch하고 두 번째 작업을 다시 시도했습니다. 하지만 때로는 두 번째로 실패하는 경우도 있습니다 ... 좋은 해결책이 아닌 것 같습니다. 당신이 안전하게 할 수 있다면
것은 당신이 버전을 사용하고을 ('Version' @) 귀하 실재? –
@Version을 사용하지 않습니다. 그것에 대해 읽을 것입니다 – inor