Boa tarde,
Tenho 3 Entitys (Usuario, Regra, RegraUsuario)
Quase tudo funcionando perfeitamente porem quando faço um update na entity regra, ele executa o update e após isso exclui os registros associados na entity RegraUsuario. Os dados da tabela associativa RegraUsuario só deveriam ser excluidos se uma Regra ou um usuario fossem excluidos mas não quando fossem alterados, alguem sabe como resolver?
Minha DAO
public abstract class GenericDAO<T extends AbstractEntity> implements
GenericRepository<T> {
private final Class<T> classe;
@SuppressWarnings("unchecked")
protected GenericDAO() {
this.classe = (Class<T>) ((ParameterizedType) getClass()
.getGenericSuperclass()).getActualTypeArguments()[0];
}
/* Metodos */
public void adiciona(T entity) {
HibernateUtil.currentSession().persist(entity);
}
public void altera(T entity) {
HibernateUtil.currentSession().update(entity);
}
@SuppressWarnings("unchecked")
public T carrega(Long id) {
return (T) HibernateUtil.currentSession().load(classe, id);
}
public void remove(T entity) {
HibernateUtil.currentSession().delete(entity);
}
@SuppressWarnings("unchecked")
public List<T> lista() {
return HibernateUtil.currentSession().createCriteria(classe).list();
}
}
Usuario
@Entity
@Table(name="INTRA_NESIC_USUARIO")
public class Usuario extends AbstractEntity{
@Column(nullable=false)
private String nome;
@Column(nullable=false)
private String login;
@Column(nullable=false)
private String senha;
@NotAudited
@ManyToMany(fetch = FetchType.EAGER)
@Fetch(FetchMode.SUBSELECT)
@BatchSize(size=10)
@JoinTable(name = "INTRA_NESIC_REGRA_USUARIO",
joinColumns = @JoinColumn(name = "usuario_id"),
inverseJoinColumns = @JoinColumn(name = "regra_id"))
private List<Regra> regras;
Regra
@Entity
@Table(name="INTRA_NESIC_REGRA")
public class Regra extends AbstractEntity {
@Column(nullable=false)
private String regra;
@Column(nullable=false)
private String descricao;
@NotAudited
@ManyToMany(fetch = FetchType.EAGER)
@Fetch(FetchMode.SUBSELECT)
@BatchSize(size=10)
@JoinTable(name = "INTRA_NESIC_REGRA_USUARIO",
joinColumns = @JoinColumn(name = "regra_id"),
inverseJoinColumns = @JoinColumn(name = "usuario_id"))
private List<Usuario> usuarios;
RegraUsuario
@Entity
@Table(name = "INTRA_NESIC_REGRA_USUARIO")
public class RegraUsuario extends AbstractEntity {
@ManyToOne
@JoinColumn(name = "usuario_id")
private Usuario usuario;
@ManyToOne
@JoinColumn(name = "regra_id")
private Regra regra;