@ManyToMany Delete Antes Insert

3 respostas
K

E ai galera,
Estou com um problema com Hibernate. Tenho o Seguinte mapeamento abaixo.

......

@SequenceGenerator(name = "SEQ_GENERATOR", sequenceName = "SQ_ACESSO_ID", allocationSize = 1)
@Entity
@Table(schema = "ACESSO", name = "FUNCIONALIDADE")
@NamedQueries({
	@NamedQuery(name = "Funcionalidade.findAll", query = "select a from Funcionalidade a")
})
public class Funcionalidade {

	private static final long serialVersionUID = -6359589600536668167L;

	@Id
	@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SEQ_GENERATOR")
	@Column(name = "ID")
	private Long id;

	@NotEmpty
	@Column(name = "FUNC_NOME")
	private String nome;

	@ManyToMany(targetEntity=com.login.acesso.entity.Componente.class,cascade={CascadeType.ALL})
	@JoinTable(
			name="FUNCIONALIDADE_COMPONENTE",
			joinColumns={@JoinColumn(name="FNCP_FUNC_ID")},
			inverseJoinColumns={@JoinColumn(name="FNCP_COMP_ID")}
	)
	private List<Componente> componentes = new ArrayList<Componente>();

	........get e sets........
}
............
@Entity
@SequenceGenerator(name = "SEQ_GENERATOR", sequenceName = "SQ_ACESSO_ID", allocationSize = 1)
@Table(schema = "ACESSO", name = "COMPONENTE")
@NamedQueries({
	@NamedQuery(name = "Componente.findAll", query = "select a from Componente a where a.sistema = :sistema ")
})
public class Componente {

	private static final long serialVersionUID = 5798606359670714152L;

	@Id
	@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SEQ_GENERATOR")
	@Column(name = "ID")
	private Long id;

	@NotEmpty
	@Column(name = "COMP_NOME")
	private String nome;

	@NotNull
	@ManyToOne
	@JoinColumn(name = "COMP_SIST_ID")
	private Sistema sistema;

	@ManyToMany(
			cascade={CascadeType.PERSIST, CascadeType.MERGE},
			mappedBy="componentes",
			targetEntity=com.login.acesso.entity.Funcionalidade.class
	)
	private List<Funcionalidade> funcionalidades;

	........get e sets........

}

Quando vou persistir o objeto Funcionalidade sempre ele faz um DELETE e um INSERT na tabela "FUNCIONALIDADE_COMPONENTE" , a lista não está sendo manipulada.
Se eu fizer uma consulta e logo em seguinte em updade ocorre o msm erro.

Acredito que deveria fazr um update ou nada se o relacionamento já existe.

Vlw pela ajuda.

abraços

3 Respostas

rogelgarcia

Acho que o comportamento é fazer essess deletes e inserts mesmo

Pelo que eu me lembro… esse relacionamento many-to-many era bem melhor de ser feito com XML… aí vc usava um bag… mas isso é da época dos dinos tb… ehhehe

A documentacao do hibernate recomenda fazer um relacionamento @OneToMany e outro @ManyToOne… com uma tabela de ligaçao no meio… ao invés de usar o @ManyToMany

R

Caros,estou ‘ressuscitando’ o tópico pq estou passando exatamente pelo msm problema,alguem sabe como resolver?

fbl.lucas

tenta deixar as annotations ManyToMany sem o cascade

Criado 26 de março de 2010
Ultima resposta 15 de fev. de 2012
Respostas 3
Participantes 4