Erro reassociated object has dirty collection reference (or an array)

2 respostas
J

Bom dia, usavamos normalmente o Hibernate 3 e ao atualizarmos para o 4.3.5 nos deparamos com esse erro:

Caused by: org.hibernate.HibernateException: reassociated object has dirty collection reference (or an array) at org.hibernate.event.internal.OnLockVisitor.processCollection(OnLockVisitor.java:84) at org.hibernate.event.internal.AbstractVisitor.processValue(AbstractVisitor.java:121) at org.hibernate.event.internal.AbstractVisitor.processValue(AbstractVisitor.java:82) at org.hibernate.event.internal.AbstractVisitor.processEntityPropertyValues(AbstractVisitor.java:76) at org.hibernate.event.internal.AbstractVisitor.process(AbstractVisitor.java:143) at org.hibernate.event.internal.AbstractReassociateEventListener.reassociate(AbstractReassociateEventListener.java:100)

o erro é disparado nesse método:

UsuarioPermissaoPK pk = new UsuarioPermissaoPK();

pk.setPermissao§;

pk.setUsuario(u);

<strong>UsuarioPermissao up = usuarioPermissaoDao.pesquisarPorId(pk);</strong>
<a class="mention" href="/u/override">@Override</a> public T pesquisarPorId(ID id) {

return (T) getEntityManager().find(getClasseDominio(), id);

}

2 Respostas

B

@Jose_Oquendo,
O código que passou, está correto?

Aqui a variável pk é do tipo UsuarioPermissaoPK:

Como argumento é passado UsuarioPermissaoPK:

No método, o parâmetro é do tipo ID:

J

Oi Bruno, é assim mesmo, tenho um DaoGenerico:

public interface DaoGenerico<T, ID extends Serializable> {

public Class getObjectClass();

public T salvar(T object);

public boolean salvar(Notificacao n,Protocolo p) throws Exception;

public T pesquisarPorId(ID id);

public T atualizar(T object);

public T pesqParam(String query, Map<String, Object> params);

public void excluir(T object);

}

e sua implementação:

public abstract class DaoGenericoImp<T, ID extends Serializable> implements DaoGenerico<T, ID> {

.

.

.

<a class="mention" href="/u/override">@Override</a>

public T pesquisarPorId(ID id) {

return (T) getEntityManager().find(getClasseDominio(), id);

}

.

.

.

}

como disse, estava funcionando tudo normal com o Hibernate 3, depois q atualizei as bibliotecas para o 4.3.5, começou o erro.

Criado 7 de outubro de 2019
Ultima resposta 7 de out. de 2019
Respostas 2
Participantes 2