Meu problema é o seguinte, preciso travar os objetos antes de começar a transação.
EntityManager em = //Metodo para conseguir o entityManager
em.lock(o,LockModeType.PESSIMISTIC_WRITE);
Só que quando esse objeto já foi travado por outra maquina esse código trava, se eu tento fazer um check no modo do objeto antes:
o = DaoEntidade.procura(id);
if((em.getLockMode(u)!=LockModeType.PESSIMISTIC_WRITE){
em.lock(o,LockModeType.PESSIMISTIC_WRITE);
}
Trava do mesmo jeito porque o lockmode que volta é o LockModeType.OPTIMISTIC
Esse modo volta tanto para registros travados como os não travados.
Questão: Como eu pego o verdadeiro modo de lock do objeto?