save()
또는 update()
메쏘드를 호출하기 전에 Hibernate 엔티티가 자동적으로 데이터베이스에 유지된다 (또는 적어도 캐쉬되어야 함). 나에게 이것은 아주 이상한 기본 행동이다 -하지만 오케이, 내가 그것을 해제 할 수있는 한, 괜찮아.Hibernate의 자동 영속성 전략을 변경하는 방법
내가 가진 문제는 데이터베이스의 엔티티가 상태 (상태 "1"에서 상태 "2"로)를 여전히 가져온 경우에만 내 엔티티의 상태 1"). 이는 다른 서버가이 동일한 객체를 업데이트 할 때 동시성 문제를 제거하기위한 것입니다. 이런 이유 때문에, 엔터티가 예상 상태 "1"에있는 경우에만 엔터티를 업데이트하는 사용자 지정 NamedQuery
을 만들었습니다. 다음은 몇 가지 의사 코드입니다.
// Get the entity
Entity item = dao.getEntity();
item.getState(); // == 1
// Update the entity
item.setState(2); // Here is the problem, this effectively changes the
// state of my entity breaking my query that verifies
// that state is still == 1.
dao.customUpdate(item); //Returns 0 rows changes since state != 1.
세터가 cache/db의 상태를 변경하지 않도록하려면 어떻게해야합니까?
방법 업데이트 쿼리가 원래의 데이터를 비교할 수 있는가? 내가 아는 한 모든 쿼리는 투명하게 세션 캐시를 사용하므로 객체에서 수행 한 모든 테스트는 커밋/플러시되기 전에도 업데이트 된 상태를 볼 수 있습니다. – mdma