Insert em cascata [RESOLVIDO]  XML
Índice dos Fóruns » Ferramentas, Frameworks e Utilitários
Autor Mensagem
Jair Rillo Junior
Moderador
[Avatar]

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

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


Não é estranho, é como o pdioniziofilho disse

pdioniziofilho wrote:

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.


Ou seja, o lado da ClasseB que manda no relacionamento, portanto ela deve conhecer o objeto da ClasseA. Uma solução para evitar isso seria utilizar o relacionamento OneToMany unidirecional (que apenas a Classe A enxerga a classe B), porém isso dai iria mudar o seu schema (e talvez no seus requisitos isso não seja válido).

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

vc tem que inserir o objeto da classeA dentro da classeB e a classeB na lista da classeA, senao nao funciona.

Um tem que "ligar" com o outro ja que voce esta usando o mapeamento bidirecional

@Apenas complementando com o que o Jair disse.

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


SCJP
SCWCD
SCBCD
SCEA
Jedi_FeniX
Virtual Machine Man
[Avatar]

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

Entendi.
Então para que server o "mappedBy", se preciso incluir uma classe na outra?
E como ficaria a anotação com o relacionamento OneToMany unidirecional?

www.bau-de-dev.com
Jair Rillo Junior
Moderador
[Avatar]

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

No caso do relacionamento unidirecional, irá ocorrer o seguinte:

- Não existirá o atributo ClasseA dentro da ClasseB
- Consequentemente, não havera o campo (CLASSEA_ID) na tabela CLASSEB (no banco de dados)
- Haverá uma nova tabela (CLASSEA_CLASSEB) com 2 campos: IDs de ambas as tabelas.
- Nesse caso não precisa do mappedBy.

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

Com o @OneToMany voce nao teria nada na sua classe que permitiria uma navegacao de volta para a classe que manda na relacao.

Exemplo:



removeria essse atributo classA da sua classe ..

e teria que mudar seu banco, criando uma "JoinTable"

o mappedBy serve para dizer para sua classe que todo mapeamento necessario para a relacao esta na outra classe, e que quem manda na relacao é a outra classe.

SCJP
SCWCD
SCBCD
SCEA
Jedi_FeniX
Virtual Machine Man
[Avatar]

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

Pelo que eu etendi, teria que ser criada uma tabela de relacionamento entre CLASSA e CLASSB, acho que neste caso, não iria ficar legal. E isso não iria bater com o requisito.
Mas valeu pela explicação, sempre é bom saber mais um pouco.

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

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

opa!

qualquer coisa posta ae,

ps: to parecendo "papagaio de pirata", o Jair posta e enquanto eu dou um quote e posto nao vejo o post dele, em seguida posto praticamente o que ele escreveu.

SCJP
SCWCD
SCBCD
SCEA
 
Índice dos Fóruns » Ferramentas, Frameworks e Utilitários
Ir para:   
Powered by JForum 2.1.8 © JForum Team