JPA inserir pai com filho já persistido

3 respostas
D

Olha eu de novo aki ,

Estou com um problema onde eu preciso inserir uma entidade, e essa entidaDE tem um relacionamento OneToOne

Questão tem uma Disciplina

O problema é que ao tentar cadasta uma questão , o JPA tenta inserir primeiro a disciplina, mas eu ñ deve pode fazer isso ,pois as disciplinas já foram inseridas, eu quero só que ele add a chave estrangeira eu estou fazendo assim para persistir mas ñ sei se é o certo.

public class Questoes implements Serializable {


	@OneToOne(optional = false)
	@JoinColumn(name = "idDisciplina", referencedColumnName = "idDisciplina", nullable = false)
	private Disciplina disciplina;

e para persistir estou fazendo assim eu coloco a pk da disciplina

QuestoesAvulsas questao = new QuestoesAvulsas();
Disciplina disciplina = new Disciplina();
			questao.setPergunta("pergunta:"+i);
			questao.setResposta(QuestoesAvulsas.RESP_A);
			questao.setAlternativa_A("alternativa_A:"+i);
			questao.setAlternativa_B("alternativa_B:"+i);
			questao.setAlternativa_C("alternativa_C:"+i);
			questao.setAlternativa_D("alternativa_D:"+i);

			disciplina.setId(1);

Como é o certo de fazer esse tipo de persistencia, tem que fazer primeiro um busca por essa entidade ,setar dentro da questão e depois persistir ou a outra forma de fazer isso

3 Respostas

Rodrigo_Sasaki

é… você precisa buscar a disciplina e setar na questão.

no blog do jakefrog tem um exemplo bacana, onde você não precisa usar o find, usa um outro método que busca só a PK. acho que seria útil pra você. Não consigo pegar o link agora, mas se quiser dar uma vasculhada la nos posts de JPA, seria bacana :slight_smile:

Hebert_Coelho

se na hora de persistir o ID estiver como 0, ele irá considerar como se fosse uma entidade nova.
Esse post explica tudo: @OneToOne Unidirecional e Bidirecional.

OBS.: Classe Pai e filha é nomeclatura utilizada para extends e não no caso de OneToOne.

D

Só para agradecer vlw ,

usei o metodo find msm ,ma vou pesquisar mais a fundo qdo tiver tempo;

Criado 2 de maio de 2012
Ultima resposta 3 de mai. de 2012
Respostas 3
Participantes 3