Testei em debug e verifiquei que estou chamando o persist do entityManager
e tbm verifiquei que no sql gerado pelo jpa nao tem a coluna trn_id do relacionamento
vejam o sql gerado
insert into sns_versao_treinamento (rgc_id, ver_id, vtr_isTreinado) values (?, ?, ?)
Nos relacionamentos OneToMany, você deve usar o relacionamento bi-direcional, ou seja, mapear os relacionamentos nas duas entidades.
[code]
//Entidade treinamento @OneToMany(mappedBy = “treinamento”, cascade = CascadeType.ALL) @ForeignKey(name = “sns_tre_vtr_id_fk”)
public List getVersoesTreinamento() {
return versoesTreinamento;
}
//Entidade treinamento versão
@ManyToOne
@JoinColumn(name = "trn_id")
private Treinamento treinamento;[/code]
Você até pode usar o relacionamento uni-direcional (somente o OneToMany), mas dai terias que referenciar a coluna no referencedColumnName (somente a partir do JPA 2.0).
Testei desta maneira e funcionou, porem da um trabalhao pra salvar isso,
tenho que salvar o treinamento percorro a lista de versoesTreinamento e
pego versao a versao e seto o treinamento salvo, depois adiciono a lista de versoes
alterada ao treinamento e salvo ele novamente.
Isto é mto trabalho o hibernate nao deveria resolver isso pra mim???
Tentei desta maneira e nao salva o id na tabela, tentei salvar o treinamento primeiro e depois incluir as versoes e salvar novamente o treinamento e tbm nao funcionou
Cara, tu ta usando o relacionamento bi-direcional. Nesse caso não precisa usar joinColumn nos dois lados. Deixa só na versao_treinamento e usa o mappedBy em treinamento.
Fiz esta alteracao mas nao funcionou, nao salva os ids na tabela, as anotacoes sao padrao dos sistemas aki, sempre utilizam anotacoes nos get’s, pq nao sei.