2014-11-27 11 views
2

최대 절전 모드에 대해 잠금 모드를 지정해야합니다.최대 절전 모드 : 조건에 대한 lockMode가 작동하지 않습니다.

session().createCriteria(clazz, "c") 
    .add(Restrictions.eq("c.a", false)) 
    .add(Subqueries.propertyEq("c.b", subquery)) 
    .setLockMode("pos", LockMode.PESSIMISTIC_READ); 

을하지만 제공되는 쿼리를 볼 때 - 아직 SELECT FOR UPDATE

가 어떻게 SELECT FOR UPDATE 절을 만들기 위해 최대 절전 모드로 강제 할 수 제공하지 않습니다 최대 절전 모드 : 내가 뭐하는 거지?

session().get(clazz, id, LockOptions.UPGRADE); 

하지만 더 복잡한 쿼리를 사용해야합니다 나는 그것이 작동하는 경우에만 참조하는 것은 이것이다.

답변

0

나는 그것이 작동하지 않는 이유를 발견했습니다. 그것은 실제로 최대 절전 모드의 버그입니다. 3.5-3.6 그리고 4.0.1에서만 수정되었습니다.

MyObject myObject = criteria.uniqueResult(); 
MyObject lockedOne = (MyObject) session() 
         .get(MyObject.class, myObject.getId(), LockMode.UPGRADE_NOWAT); 
:

https://hibernate.atlassian.net/browse/HHH-5275

그래서, 난이 해결 방법으로 종료했습니다