Duvida no Anotation OneToOne

1 resposta
cristianovieira

Olá boa noite, minha dúvida é bem simples, tenho 2 classes Vendedor e Comissão, relacionamento OneToOne, estou conseguindo salvar os dados no banco normalmente, envio o Vendedor com a Comissão e ele Salva normalmente devido ao cascade da classe Vendedor no relacionamento com a classe Comissão. Pois bem, gostaria de saber como deletar uma comissão sem deletar um vendedor, ou seja, como ficaria a anotação OneToOne, bom eu deixei as 2 anotações com o cascade = ALL para postar a duvida aqui. Segue abaixo:

public class Vendedor extends Pessoa {
    @OneToOne(targetEntity=Comissao.class)
    @Cascade(CascadeType.ALL)
    @JoinColumn(name="comi_id")

    private Comissao comissao;
	public Comissao getComissao() {
		return comissao;
	}

	public void setComissao(Comissao comissao) {
		this.comissao = comissao;
	}
public class Comissao {
    @OneToOne(targetEntity=Vendedor.class)
    @Cascade(org.hibernate.annotations.CascadeType.ALL)
    @JoinColumn(name="pess_id")
	private Vendedor vendedor;

	public Vendedor getVendedor() {
		return vendedor;
	}

	public void setVendedor(Vendedor vendedor) {
		this.vendedor = vendedor;
	}

PS: Como ficaria a configuração do cascade das classes para que eu possa deletar apenas a comissão sem deletar o vendedor.
Obrigado.

1 Resposta

cristianovieira

Ok resolvido, a curiosidade da solução falou mais rapido, vamos la, bom utilizando o

@OneToOne(mappedBy="vendedor")

na classe Vendedor irá fazer com que a classe COMISSÂO tenha o ID de vendedor mais vendedor não terá o ID de comissão ou seja, não teremos mais uma chave estrangeira em vendedor apontando para comissão, com isso podemos ficar livre do cascade e deletar comissão sem problema.

De qualquer forma obrigado.

Criado 7 de fevereiro de 2012
Ultima resposta 7 de fev. de 2012
Respostas 1
Participantes 1