projeto.setPessoa(pf.getPessoa());
pf.getPessoa().setProjetos(new List<Projetos>()); // caso nao for uma lista faça um new no objeto que for projetos
pf.getPessoa().getProjetos().add(projeto);
projeto.setPessoa(pf.getPessoa());
pf.getPessoa().setProjetos(new List()); // caso nao for uma lista faça um new no objeto que for projetos
pf.getPessoa().getProjetos().add(projeto);
[/code][/quote]
é uma Lista, como salvo desse jeito resolveu em partes , agora nao dá erro mais , adiciona na lista , mas de 1 em 1 , masmo que insira 10 na lista só é salvo no banco o primeiro
[quote=tenclar][quote=daniesouza]Tenta Fazer isso olha
[code]
projeto.setPessoa(pf.getPessoa());
pf.getPessoa().setProjetos(new List()); // caso nao for uma lista faça um new no objeto que for projetos
pf.getPessoa().getProjetos().add(projeto);
[/code][/quote]
é uma Lista, como salvo desse jeito resolveu em partes , agora nao dá erro mais , adiciona na lista , mas de 1 em 1 , masmo que insira 10 na lista só é salvo no banco o primeiro[/quote]
cara… o new vc só faz uma vez… imagine que dentro de pessoa tenha uma lista de projetos… só que esta lista nao esta inicializada…
por isso vc precisa inicializar(new) na lista para poder adicionar os objetos…
se vc faz um new novamente ele esta realocando os objetos em memoria e os projetos que tinham na lista somem…
um outro modo de resolver estre problema e inicializar a lista direto na classe entidade(Pessoa)
List<Projetos> projetos = new ArrayList<Projetos>();
dai vc pode fazer direto pf.getPessoa().getProjetos().add(projeto);
verifiquei que somente utilizar pfdao.savePessoaFisica(pf); após utilizar as correções sujeridas não salva a lista somente depois de utilizar a classe dao do projeto
ProjetoDAO projdao = new ProjetoDAO();
projdao.save(projeto);
foi ai que descobri pq nao estava salvando toda a lista ,
fiz o seguinte código para que salvasse tudo :
PessoaFisicaDAO pedao = new PessoaFisicaDAO();
pedao.savePessoaFisica(pfisica);
ProjetoDAO proj = new ProjetoDAO();
for (Projeto pro : pfisica.getPessoa().getProjetos()) {
proj.saveProjeto(pro);
}
mas para mim deveria salvar somente chamando o dao pessoa fisica que salvaria em cascata , pois está definido isso na entidade …
[quote=tenclar]verifiquei que somente utilizar pfdao.savePessoaFisica(pf); após utilizar as correções sujeridas não salva a lista somente depois de utilizar a classe dao do projeto
ProjetoDAO projdao = new ProjetoDAO();
projdao.save(projeto);
foi ai que descobri pq nao estava salvando toda a lista ,
fiz o seguinte código para que salvasse tudo :
PessoaFisicaDAO pedao = new PessoaFisicaDAO();
pedao.savePessoaFisica(pfisica);
ProjetoDAO proj = new ProjetoDAO();
for (Projeto pro : pfisica.getPessoa().getProjetos()) {
proj.saveProjeto(pro);
}
mas para mim deveria salvar somente chamando o dao pessoa fisica que salvaria em cascata , pois está definido isso na entidade …
[/quote]
Entao… posta as suas classes de entidade para darmos uma olhada… esse jeito que vc fez funciona mas nao e o “correto”… o certo e acontecer como vc falou… deve ter alguma coisa errada nos relacionamentos…
na classe PessoaFisica eu alterei no relacionamento @ManyToOne(cascade = CascadeType.MERGE) para CAscadeType.ALL , agora adiciona, mas não salva a exclusão.
[quote=tenclar]na classe PessoaFisica eu alterei no relacionamento @ManyToOne(cascade = CascadeType.MERGE) para CAscadeType.ALL , agora adiciona, mas não salva a exclusão.
[/quote]
da uma olhada neste meu exemplo… tenho as entidades Pessoa e Endereço… fica assim 1 Pessoa Possui N Endereços
@Entity
@Table(name = "pessoa")
public class Pessoa implements Serializable {
@OneToMany(mappedBy = "idPessoa",cascade= CascadeType.ALL)
private Collection<Endereco> enderecoCollection;
}
Agora tenho a classe Endereço
@Entity
@Table(name = "endereco")
public class Endereco implements Serializable {
private static final long serialVersionUID = 1L;
@JoinColumn(name = "IdPessoa", referencedColumnName = "Id")
@ManyToOne
private Pessoa idPessoa;
}
acompanhando o retorno sql do hibernate , só está disparando update na lista de projetos , não exclui itens da lista , só adiciona.
acho que terei de fazer uma gambiz.