Em uma determinada parte do meu programa tenho que gravar um registro no banco de dados, se eu adicionar o registro pela primeira vez, grava sem problemas, mas se eu editar o mesmo registro sem antes ter perdido o foco do registro na tela, acontece uma exceção:
aused by: java.lang.NullPointerException
at oracle.toplink.essentials.descriptors.VersionLockingPolicy.isNewerVersion(VersionLockingPolicy.java:497)
private boolean processaGravacao(boolean isNovo) {
boolean flag = false;
Object obj;
try {
obj = componentsToEntity();
try {
if(antesGrava()){
if (isNovo) {
obj = ger.insere((T) obj);
} else {
obj = ger.update((T) obj);
}
flag = true;
entityToComponents(obj);
}
} catch (Exception e2) {
throw new RuntimeException(e2);
}
} catch (CampoInvalidoException e) {
MsgUtils.erro(this, e.getMessage());
}
depoisGrava(flag);
return flag;
}
O método acima usa este método que é o que atualiza o objeto.
/**
* atualiza um objeto
*
* @param atual
* @return o objeto alterado
*/
public T update(T atual) {
EntityTransaction t = em.getTransaction();
t.begin();
atual = em.merge(atual);
em.flush();
t.commit();
return atual;
}
Alguém tem alguma idéia do que pode ser?