Lock em Registro

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?

Então alguém sabe como eu consigo obter o estado real do banco?