O seu objeto Pessoa Fisica para estes dados possui projetos?
T
tenclar
projetos possui pessoa
pessoa fisica possui pessoa
melhor, pessoa fisica possui pessoa e pessoa possui uma lista de projetos
A
Andre_Fonseca
pf.getPessoa().getProjetos().add(projeto)
Debuga a linha acima,
pf.getPessoa().getProjetos()
deve estar retornando nulo, ai você chama o método add e irá lançar aquela exception
abs
T
tenclar
sim, é essa a linha em questTão que está com o erro , tem alguma outra forma de adicionar para que nao ocorra a exception ?
eu to tentando fazer eum um unico save ja incluir os dados , acho que não será possivel
D
daniesouza
Tenta Fazer isso olha
projeto.setPessoa(pf.getPessoa()); pf.getPessoa().setProjetos(newList<Projetos>()); // caso nao for uma lista faça um new no objeto que for projetospf.getPessoa().getProjetos().add(projeto);
é 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
A
Andre_Fonseca
você está fazendo new toda hora ou então só quando a lista não vem preenchida conforme o colega colocou acima??
é 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
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);
T
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 :
mas para mim deveria salvar somente chamando o dao pessoa fisica que salvaria em cascata , pois está definido isso na entidade …
D
daniesouza
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 :
mas para mim deveria salvar somente chamando o dao pessoa fisica que salvaria em cascata , pois está definido isso na entidade …
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.
D
daniesouza
tenclar:
na classe PessoaFisica eu alterei no relacionamento @ManyToOne(cascade = CascadeType.MERGE) para CAscadeType.ALL , agora adiciona, mas não salva a exclusão.
da uma olhada neste meu exemplo… tenho as entidades Pessoa e Endereço… fica assim 1 Pessoa Possui N Endereços
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.
T
tenclar
Adicionar na lista está fuuncionando mas remover não.
pf.getPessoa().getProjetos().remove(projeto);pfdao.savePessoaFisica(pf);projetodao.remove(projeto);// mas tem como nao ter de usar essa linha ?
I
isaiaspf
Cara, eu não estou conseguindo te entender.
Descreve primeiro o que você está querendo fazer sem postar código.
T
tenclar
para ficar um pouco mais claro , vou passar uma situação que fica parecida ao que estou tentando resolver :
supondo que tenho uma Venda , e nessa venda tenho Cliente, e a venda tem itens de venda como produtos de produtos
gostaria de alem de poder salvar os itens da venda , quando remover alguns itens , esse mesmo método se encarregue de retirar do banco os itens removidos
pois incluir estou conseguindo, mas remover não