Cascade.Persist com chave composta

8 respostas
H

Tenho um problema na persistência do meu código.

Tenho uma classe pai, uma classe filho, e uma clase “tio”

public class pai{

@Id
public Integer id;
//getters and setters

@OneToMany(cascade = CascadeType.PERSIST)
List filhos

//getters and setters
}

public class filho{

@EmbeddedId
public idFilho id;

//getters and setters
}

@Embeddable
public idFilho{

private Integer idTio;

private Integer idPai;

}

public class tio{

public Integer id;

//getters and setters

}

Quando preencho a entidade pai com uma lista de filhos e dou o comando save(Pai) não persiste e gera o seguinte erro na hora de persistir o pai Erro: null
Caso eu persista o pai antes, preencha as chaves primárias com o código dele funciona, mas sem persistir o pai antes não, alguma dica?

8 Respostas

Hebert_Coelho

Tenta trocar de seu @Id de Integer para int.

H

Todas ou alguma em específico?
E por qual motivo?

Hebert_Coelho

Coloca em todas.
Você ta tendo erro de null, int é primitivo e já vem com valor default.

Você está gerando esse valor na unha ou o banco vai gerar para você?
Se for o banco, você não colocou a anotação @GeneratedValue

H

Cara, minha entidade pai ela tem um sequence generator que funciona bacana
A única coisa mesmo que pega é eu persistir a chave composta com cascade sem preencher a chave do pai na pk…

Hebert_Coelho

helderfalcaob:
Cara, minha entidade pai ela tem um sequence generator que funciona bacana
A única coisa mesmo que pega é eu persistir a chave composta com cascade sem preencher a chave do pai na pk…
Blz, sempre tem que ter valor o id antes de persistir mesmo. Se for int ele sempre vai ter valor.

H

Cara…
a questão do int tbm não deu certo…
Um colega meu conseguiu fazer mas controlando a transação,
dando commit depois de todo o processo…

Hebert_Coelho

helderfalcaob:
Cara…
a questão do int tbm não deu certo…
Um colega meu conseguiu fazer mas controlando a transação,
dando commit depois de todo o processo…
Blz. O importante é funcionar
Da próxima vez, se possível, coloque o código real ou o mais próximo possível, pois fica mais fácil de ajudar.
Outra observação é que classe filho seria: Filho extends Pai. Isso é herança, Uma classe dentro da outra é composição e não existe nenhum comportamento de herança nesse tipo de relacionamento.

Inté! \o_

H

NEsse caso ela não era uma “filha” mesmo não cara…
Ela era so uma entidade que possuía um relacionamento ManyToOne com a classe Pai…

Criado 27 de abril de 2012
Ultima resposta 27 de abr. de 2012
Respostas 8
Participantes 2