다음 코드를 사용하여, 설정에 (비관적) 잠금을 시도 할 때 :Glassfish 2.1을 사용하여 JPA에서 비관적 잠금을 구현하는 방법은 무엇입니까?
em.lock(controlnumbers, LockModeType.WRITE);
em.refresh(controlnumbers);
나는 다음과 같은 예외가 점점 오전 :
[#|2009-09-10T15:42:48.324-0400|INFO|sun-appserver2.1|javax.enterprise.system.container.ejb|_ThreadID=31;_ThreadName=httpSSLWorkerThread-8080-19;|
javax.ejb.TransactionRolledbackLocalException: Exception thrown from bean; nested exception is: javax.persistence.PersistenceException: ejb30-wrong-lock_called_without_version_locking-index (There is no English translation for this message.)
javax.persistence.PersistenceException: ejb30-wrong-lock_called_without_version_locking-index (There is no English translation for this message.)
at oracle.toplink.essentials.internal.ejb.cmp3.base.EntityManagerImpl.lock(EntityManagerImpl.java:619)
at com.sun.enterprise.util.EntityManagerWrapper.lock(EntityManagerWrapper.java:582)
at com.eximtechnologies.transactionserver.persistence.session.ControlNumbersFacade.lock(ControlNumbersFacade.java:43)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
가 어떻게 글래스 피시 2.1 비관적 잠금을 구현할 수 있습니까?
낙천적 인 잠금을 원하면 작동합니다. 의문의 여지가 있듯이, 나는 비관적 인 잠금을 원한다. :) – jsight
EJB3 스펙에 따르면 lock()은 @version 속성이있는 엔티티에서만 지원됩니다. – Jan
@Jan - 좋지만 질문에 대답하지 않습니다. :) 대부분의 컨테이너에는 비관적 인 잠금을 지원하는 기능이 있습니다 (일부 컨테이너의 경우 특정 방식으로). 글래스 피쉬는 쿼리 힌트를 통해 ... – jsight