Insert em cascata [RESOLVIDO]  XML
Índice dos Fóruns » Ferramentas, Frameworks e Utilitários
Autor Mensagem
Jedi_FeniX
Virtual Machine Man
[Avatar]

Membro desde: 26/04/2007 14:32:30
Mensagens: 586
Offline

Estou tentando fazer um insert em cascata, ou seja, inserindo vários dados em várias tabelas através de relacionamento.
Por exemplo, tenho a classe A que tem um List da classe B.

O meu relacionamento está assim:

Classe A:


Classe B:


Quando eu tento inserir uma ClassA com várias objetos da ClassB, dá erro.


Só funciona quando eu faço ao contrário, ou seja, quando eu tento inserir uma ClassB com várias ClassA. Isso é erro de configuração? Ou não tem como fazer este insert?

This message was edited 2 times. Last update was at 12/02/2009 14:13:51


www.bau-de-dev.com
otavio
JavaChild
[Avatar]

Membro desde: 01/08/2004 00:49:29
Mensagens: 139
Localização: JVM
Offline

Jedi_FeniX, sempre que você tiver algum problema e pedir um help, diga sempre qual foi o erro, ou pelo menos alguma mensagem que você puder.

E pelo que sei toda a classe para ser persistida precisa ter ID. Inclusive a annotation @Id são obrigatórios.
pdioniziofilho
JavaBaby
[Avatar]

Membro desde: 23/06/2006 10:09:30
Mensagens: 95
Offline

Seguinte..

Nesse tipo de relacionamento voce tem que ter um lado que manda no seu relacionamento.

No caso de relacionamentos @ManyToOne e @OneToMany o lado que tem o @ManyToOne é sempre o que manda na relacao, ou seja, o lado onde é realizado os inserts, deletes e o cascade funciona para as outras classes.

fica mais ou menos assim:



e sua ClassA fica assim:



onde esse "mappedBy" no @OneToMany indica que todo mapeamento necessário para seu relacionamento esta na outra classe.

Creio ser isso, se não entendi tudo errado.

Faça um teste, e quando der algum erro, por favor poste para nos.




SCJP
SCWCD
SCBCD
SCEA
pdioniziofilho
JavaBaby
[Avatar]

Membro desde: 23/06/2006 10:09:30
Mensagens: 95
Offline

otavio wrote:Jedi_FeniX, sempre que você tiver algum problema e pedir um help, diga sempre qual foi o erro, ou pelo menos alguma mensagem que você puder.

E pelo que sei toda a classe para ser persistida precisa ter ID. Inclusive a annotation @Id são obrigatórios.



ah sim,

estou partindo do principio que na classe dele já tenha o @Entity e o @Id que sao obrigatórios no caso de classes persistidas.
otavio
JavaChild
[Avatar]

Membro desde: 01/08/2004 00:49:29
Mensagens: 139
Localização: JVM
Offline

Xii, eu havia esquecido do mappedBy.

This message was edited 1 time. Last update was at 12/02/2009 13:28:11

Jedi_FeniX
Virtual Machine Man
[Avatar]

Membro desde: 26/04/2007 14:32:30
Mensagens: 586
Offline

As outras anotações já existem, não coloquei para o post ficar menor.
O erro continua dando.





www.bau-de-dev.com
pdioniziofilho
JavaBaby
[Avatar]

Membro desde: 23/06/2006 10:09:30
Mensagens: 95
Offline

esse erro ja é outra coisa..

esse erro é pq no banco voce colocou que o ID é not null e voce esta inserindo null.

Veja na linha 40 do seu post

"Caused by: org.postgresql.util.PSQLException: ERROR: null value in column "id_classA" violates not-null constraint"

Para solucionar isso ou voce seta o ID na mao, cria uma sequence no banco (se suportar) e mapeia a sequence no seu id ou usa gerador automatico de IDs no seu mapeamento.

Olhei por cima nesse link e acho que é o que tu precisa (caso ainda nao tenha),

checa ai

http://www.hibernate.org/hib_docs/annotations/reference/en/html_single/#d0e2167

This message was edited 1 time. Last update was at 12/02/2009 13:38:33


SCJP
SCWCD
SCBCD
SCEA
Jedi_FeniX
Virtual Machine Man
[Avatar]

Membro desde: 26/04/2007 14:32:30
Mensagens: 586
Offline

Jedi_FeniX wrote:As outras anotações já existem, não coloquei para o post ficar menor.
O erro continua dando.



Não tinha colocado o erro poque achei que estivesse claro, foi mal

www.bau-de-dev.com
pdioniziofilho
JavaBaby
[Avatar]

Membro desde: 23/06/2006 10:09:30
Mensagens: 95
Offline

pera ai,

esse erro ta ocorrendo depois que voce colocou o mapeamento que passei acima ne?

ja coloco o sequence no banco ou o generator no codigo? ou ja setou manualmente o id ?

SCJP
SCWCD
SCBCD
SCEA
Jedi_FeniX
Virtual Machine Man
[Avatar]

Membro desde: 26/04/2007 14:32:30
Mensagens: 586
Offline

Este erro é o mesmo que estava dando antes, com ou sem "mappedBy" dá este erro.
E sim já tem genereator.
Atualizei as classes com as outras anotações.

Os sqls que são gerados são esses:

This message was edited 2 times. Last update was at 12/02/2009 13:50:06


www.bau-de-dev.com
pdioniziofilho
JavaBaby
[Avatar]

Membro desde: 23/06/2006 10:09:30
Mensagens: 95
Offline

como voce ta preenchendo sua classe? tem como postar aqui?

SCJP
SCWCD
SCBCD
SCEA
pdioniziofilho
JavaBaby
[Avatar]

Membro desde: 23/06/2006 10:09:30
Mensagens: 95
Offline

pdioniziofilho wrote:como voce ta preenchendo sua classe? tem como postar aqui?


e as classes com os generators tb...

SCJP
SCWCD
SCBCD
SCEA
Jair Rillo Junior
Moderador
[Avatar]

Membro desde: 29/04/2003 21:19:53
Mensagens: 2524
Localização: São Paulo / Campinas
Offline

Lembre-se que na sua classe B, você tem que inserir a instancia da classe A.

This message was edited 1 time. Last update was at 12/02/2009 14:01:03


Jair Rillo Junior

http://www.jairrillo.com/blog | Twitter | SCJA, SCJP, SCWCD, SCBCD, IBM SOA Associate
pdioniziofilho
JavaBaby
[Avatar]

Membro desde: 23/06/2006 10:09:30
Mensagens: 95
Offline

Jair Rillo Junior wrote:Lembre-se que na sua classe B, você tem que inserir a instancia da classe A.




é isso que to tentando ver se ele ta fazendo.



e se ele ta com o generator no id das duas classes ...

SCJP
SCWCD
SCBCD
SCEA
Jedi_FeniX
Virtual Machine Man
[Avatar]

Membro desde: 26/04/2007 14:32:30
Mensagens: 586
Offline

Funcionou quando eu inclui o objeto da ClassA na ClassB. Achei meio estranha esta solução. Mas valeu pela a ajuda!!!!

www.bau-de-dev.com
 
Índice dos Fóruns » Ferramentas, Frameworks e Utilitários
Ir para:   
Powered by JForum 2.1.8 © JForum Team