현재 JPA에서 엔티티를 잠그는 데 문제가 있습니다. 데이터베이스의 여러 엔티티 목록이 있습니다. 각 요소에는 해당 항목을 편집하기위한보기를로드하는 편집 단추가 있습니다. 클라이언트가 항목을 편집하려고 할 때마다 엔티티가 잠겨 있는지 확인하여 클라이언트가 엔티티의 편집 마스크를로드하는 것을 방지합니다. 엔티티를로드엔티티 잠그기
내 방법 :
[...]
mail = (EMailKonto) query.getSingleResult();
System.out.println(getLock(mail).toString());
setLock(mail, LockModeType.PESSIMISTIC_WRITE);
System.out.println(getLock(mail).toString());
호출 된 방법 :
public void setLock(T entity, LockModeType lock)
{
getEntityManager().lock(entity, lock);
}
public LockModeType getLock(T entity)
{
return getEntityManager().getLockMode(entity);
}
무슨 일이 이후 처음 syso를 인쇄 없음, 어떤 잠금이 적용되지 것입니다. 그런 다음 잠금이 설정되고 두 번째 syso가 PESSIMISTIC_WRITE를 인쇄합니다. 페이지를 새로 고치거나 다른 탭/브라우저를 사용하여 같은 엔티티의 편집 버튼을 클릭하면 잠금을 제거하지 않으므로 첫 번째 syso가 PESSIMISTIC_WRITE를 인쇄해야하지만 NONE이 다시 인쇄됩니다. 그런 종류의 기능을 구현하는 방법을 이해하도록 도와 줄 수 있습니까?
안부
(저는 Glassfish 3.X와 MySQL InnoDB 테이블을 사용하고 있습니다) –