Hibernate Insere Dois Registros! [Resolvido]

3 respostas
Dapcapix

Pessoal, tudo bom?

Gostaria de uma ajuda com o Hibernate.

Os registros estão sendo salvos em duplicidade.

Gostaria de quando salvar uma noticia, já salvar um voto para a notícia.

Classe Voto

@ManyToOne(fetch = FetchType.LAZY) 
	@JoinColumn(name="id_noticia") 
	@Fetch(FetchMode.JOIN)
	@Cascade(org.hibernate.annotations.CascadeType.ALL)
	private Noticia noticia;

Classe Noticia
@OneToMany(mappedBy="noticia", fetch= FetchType.LAZY) @Cascade(org.hibernate.annotations.CascadeType.ALL) private Collection<Voto> voto;

Salvar Noticia

noticiaDAO.salvarNoticia(noticia);
		this.voto.setNoticia(noticia);
		noticiaDAO.salvarVoto(voto);
		
		
	public void salvarNoticia(Noticia noticia) {
		this.session.merge(noticia);
	}	

	public void salvarVoto(Voto voto) {
		this.session.merge(voto);
	}

Os registros são salvos (Noticias), mas duplicados.

Hibernate: 
    /* insert br.com.site.noticia.Noticia
        */ insert 
        into
            Noticia
            (ativo, dataCadastro, descricao, titulo, id_usuario, visualizacao) 
        values
            (?, ?, ?, ?, ?, ?)
Hibernate: 
    /* insert br.com.site.noticia.Noticia
        */ insert 
        into
            Noticia
            (ativo, dataCadastro, descricao, titulo, id_usuario, visualizacao) 
        values
            (?, ?, ?, ?, ?, ?)
Hibernate: 
    /* insert br.com.site.noticia.Voto
        */ insert 
        into
            VotoNoticia
            (dataVoto, id_usuario, voto) 
        values
            (?, ?, ?)

Qual o procedimento para salvar uma unica vez? Grato.

3 Respostas

CristianPalmaSola10

Faça o seguinte tire essa linha

deixe salvando apenas a noticia que esta dentro do voto, tire a linha que falei e teste muito provavelmente funcionara

GusMcCart

O seu “problema” é que você está cascateando os relacionamentos também. Com isso, ao salvar o Voto o Hibernate já cascateará (em algumas situações, dependendo de como está a estratégia de geração de ID’s) todos os relacionamentos, tente setar a notícia no voto e salvar apenas o voto.

Dapcapix

Muito obrigado Cristian e GusMcCart.

Era isso mesmo, agora entendi o funcionamento e a lógica.

Valeu

Criado 7 de agosto de 2012
Ultima resposta 7 de ago. de 2012
Respostas 3
Participantes 3