Dúvida com relacionamento One-to-One unidirecional(JPA)

2 respostas
R

Olá galera,
tenho o seguinte relacionamento um-pra-um entre Demanda e Serviço.A entidade Demanda é a “dona” do relacionamento

@OneToOne
	@JoinColumn(name="ser_cod_servico")
	private BtpServico btpServico;

	public BtpServico getBtpServico() {
		return btpServico;
	}

Se eu tentar salvar uma Demanda,recebo o seguinte erro:
org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before merging: bean.BtpServico

Onde estou errando?

2 Respostas

vinicius.martinez

Quando voce quer salvar uma entidade “filha”, voce precisa do “Pai” carregado.

Voce tem algumas opções:

1 - Mudar o Fetch pra EAGER (até recomendo no seu caso porque como é 1 pra um ainda unidirecional);

2 - Dar um get no pai . Ex>

Pai  pai = PaiDao.find(Pai.class, filho.getPaiId())
   filho.setPai(pai);
   filho.save();

3 - Implementar um construtor através da PK do pai (ai voce só da um new no objeto Pai e passa a FK como param)

R

vinicius.martinez:
Quando voce quer salvar uma entidade “filha”, voce precisa do “Pai” carregado.

Voce tem algumas opções:

1 - Mudar o Fetch pra EAGER (até recomendo no seu caso porque como é 1 pra um ainda unidirecional);

2 - Dar um get no pai . Ex>

Pai  pai = PaiDao.find(Pai.class, filho.getPaiId())
   filho.setPai(pai);
   filho.save();

3 - Implementar um construtor através da PK do pai (ai voce só da um new no objeto Pai e passa a FK como param)


Oi Vinicius,
no meu caso não quero salvar o “filho”.Ele já existe.

Criado 2 de março de 2010
Ultima resposta 2 de mar. de 2010
Respostas 2
Participantes 2