Problema com Hibernate Envers

2 respostas
hibernate
P

Estou com um problema aparentemente relacionado ao Hibernate Envers (auditoria) que afetou todo o projeto. Quando tenho um atributo do tipo coleção (List) vinculado através de uma JoinTable, persistido em modo cascata, e adiciono um item na lista, uma exceção é lançada ao persistir o objeto principal. Para listas com mapeamento bidirecional o objeto é persistido normalmente. Como o nome da tabela que consta na exceção termina com ‘AUD’, entendo que o erro está relacionado à auditoria.

Listas mapeadas desta forma não geram exceção:

public class Historico {
    private Integer id;
    private String descricao; 
    @ManyToOne
    private Funcionario funcId;
}
private class Funcionario {
    private Integer id;
    private Integer nome;
    @OneToMany(mappedBy = "funcId", cascade = CascadeType.ALL)
    private List<Historico> historicos;
}

Já listas mapeadas assim geram a exeção:

public class Historico {
     private Integer id;
     private String descricao;
}

private class Funcionario {
    private Integer id;
    private Integer nome;
    @OneToMany(cascade = CascadeType.ALL)
    @JoinTable(name = "FUNC_HISTORICO", joinColumns - @JoinColumn(name = "funcId"), inverseJoinColumns = @JoinColumn(name = "histId")
    private List<Historico> historicos;
}

javax.persistence.EntityExistsException: a different object with the same identifier value was already associated with the session: [FUNC_HISTORICO_AUD#{funcId=438, histId=1473, REV=audit.RevInfo@61348500}]

Vale lembrar que estes id’s mostrados na exceção sempre são de algum item que já pertencia a lista, e não há nenhum tipo de manipulação sobre ele.

2 Respostas

E

Marque sua lista como
@Audited(targetAuditMode = RelationTargetAuditMode.NOT_AUDITED)

P

Já havia tentado isso, tentei agora de novo, mas o erro persiste. Obrigado pela força.

Criado 25 de outubro de 2016
Ultima resposta 25 de out. de 2016
Respostas 2
Participantes 2