Relacionamento one-to-one

145 visualizações
Pular para a primeira mensagem não lida

Régis Soares

não lida,
24 de jun. de 2010, 17:40:5224/06/2010
para nhiber...@googlegroups.com

Pessoal,

Tenho um relacionamento one-to-one entre duas tabelas.

Tabelas: Pessoa (id) e Endereco (pessoa_id)

Preciso que, ao setar Pessoa.Endereco para nulo, seja excluído o registro de endereço (Pessoa.Endereco = null). Não creio que essa seja a forma correta de fazer, pois estou há algum tempo tentando de várias formas sem sucesso.

Alguém tem alguma ideia de como isso pode funcionar?

Obrigado.

Régis Soares

luiz gustavo bosco de oliveira

não lida,
24 de jun. de 2010, 17:47:0924/06/2010
para nhiber...@googlegroups.com
Você não pode simplesmente usar a session e excluir o Endereco? ( ISession.Delete(Pessoa.Endereco); )?

--
Você está recebendo esta mensagem porque se inscreveu no grupo "NHibernate-Br" dos Grupos do Google.
Para postar neste grupo, envie um e-mail para nhiber...@googlegroups.com.
Para cancelar a inscrição nesse grupo, envie um e-mail para nhibernate-b...@googlegroups.com.
Para obter mais opções, visite esse grupo em http://groups.google.com/group/nhibernate-br?hl=pt-BR.

Régis Soares

não lida,
24 de jun. de 2010, 22:18:2224/06/2010
para nhiber...@googlegroups.com
Pois é, mas eu estou usando o conceito de repositório para raiz de agregação. Ou seja, tenho um RepositorioPessoa que é responsável por salvar objetos do tipo Pessoa e seus agregados, nesse caso, Endereço.

2010/6/24 luiz gustavo bosco de oliveira <gusta...@gmail.com>

Paulo Quicoli

não lida,
24 de jun. de 2010, 22:55:1224/06/2010
para nhiber...@googlegroups.com
Agora te pergunto... Endereço terá uma lista de Pessoas ?  Ou, é sempre 1 pra 1 mesmo? Se for... é muito melhor ter a classe Endereco como uma classe Component, mapeá-la como uma classe componente. Assim, na tabela relacional, os dados do endereço então junto com a tabela de pessoa.

Mas, se esse endereco pode ser reutilizado por mais de uma pessoa, aí sim vc precisa que endereco seja realmente mapeada para uma tabela a parte e tenha uma lista das pessoas que o utilizam.
Paulo Quicoli
Editor Técnico: .NET Magazine, ClubeDelphi Magazine, WebMobile Magazine
www.devmedia.com.br
http://pauloquicoli.spaces.live.com
twitter:@pauloquicoli

Régis Soares

não lida,
25 de jun. de 2010, 14:28:2625/06/2010
para nhiber...@googlegroups.com
Paulo,
 
Não tenho possibilidade de alterar o banco de dados, tenho que ter as duas tabelas com relacionamento um-para-um. Na verdade, o relacionamento de pessoa com endereço é opcional, ou seja, no meu domínio, uma pessoa pode não ter endereço.
abs
Régis Soares
2010/6/24 Paulo Quicoli <pauloq...@gmail.com>

Paulo Quicoli

não lida,
25 de jun. de 2010, 15:11:5325/06/2010
para nhiber...@googlegroups.com
Certo... então acho que deveria ser assim seu mapping:

 <one-to-one name="Endereco" class="ClasseEndereco"
               
constrained="true" lazy="false" cascade="all" />
www.nhibernatebrasil.net
http://pauloquicoli.spaces.live.com
twitter:@pauloquicoli

João Paulo Katayama

não lida,
25 de jun. de 2010, 15:56:0125/06/2010
para nhiber...@googlegroups.com
Não tem uma configuração do tipo: cascade.AllDeleteOrphan ?
acho que eu tinha visto alguma coisa do tipo que seria aplicado para esse caso, dê uma pesquisada.

Régis Soares

não lida,
25 de jun. de 2010, 19:30:4025/06/2010
para nhiber...@googlegroups.com
Paulo,
 
Meu mapeamento ficou assim. Fiz o mapeamento inverso tb. Tentei tb usando many-to-one em um dos lados. Nenhum deles funcionou.
 
abs

2010/6/25 Paulo Quicoli <pauloq...@gmail.com>

Régis Soares

não lida,
25 de jun. de 2010, 19:39:1925/06/2010
para nhiber...@googlegroups.com
João,
 
Tem essa configuração, mas não funcionou.
 
Eu não sei se isso é um bug ou se estou fazendo alguma coisa errada.
 
Tentei muitas formas, tanto as da referência de nhforge.org quanto as do livro hibernate in action. Nada funciona.

2010/6/25 João Paulo Katayama <minor...@gmail.com>

Eduardo Batista

não lida,
24 de jun. de 2010, 18:59:3024/06/2010
para nhiber...@googlegroups.com
Pessoa contém um endereço?
 
Já tentou:
 
set
{
if (value == null)
Pessoa.Endereco.Delete();
}
 
?
 

[]s,
-- EBatista


Juliano Oliveira

não lida,
27 de jun. de 2010, 23:16:4027/06/2010
para nhiber...@googlegroups.com
pq vc naum cria um metodo clear que limpa o endereco e trata o
enedereco limpo como nulo?

abraco

Juliano Oliveira

Em 25/06/10, Régis Soares<regis...@gmail.com> escreveu:

>>>>>>>> nhibernate-b...@googlegroups.com<nhibernate-br%2Bunsu...@googlegroups.com>


>>>>>>>> .
>>>>>>>> Para obter mais opções, visite esse grupo em
>>>>>>>> http://groups.google.com/group/nhibernate-br?hl=pt-BR.
>>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> Você está recebendo esta mensagem porque se inscreveu no grupo
>>>>>>> "NHibernate-Br" dos Grupos do Google.
>>>>>>> Para postar neste grupo, envie um e-mail para
>>>>>>> nhiber...@googlegroups.com.
>>>>>>> Para cancelar a inscrição nesse grupo, envie um e-mail para

>>>>>>> nhibernate-b...@googlegroups.com<nhibernate-br%2Bunsu...@googlegroups.com>


>>>>>>> .
>>>>>>> Para obter mais opções, visite esse grupo em
>>>>>>> http://groups.google.com/group/nhibernate-br?hl=pt-BR.
>>>>>>>
>>>>>>
>>>>>> --
>>>>>> Você está recebendo esta mensagem porque se inscreveu no grupo
>>>>>> "NHibernate-Br" dos Grupos do Google.
>>>>>> Para postar neste grupo, envie um e-mail para
>>>>>> nhiber...@googlegroups.com.
>>>>>> Para cancelar a inscrição nesse grupo, envie um e-mail para

>>>>>> nhibernate-b...@googlegroups.com<nhibernate-br%2Bunsu...@googlegroups.com>


>>>>>> .
>>>>>> Para obter mais opções, visite esse grupo em
>>>>>> http://groups.google.com/group/nhibernate-br?hl=pt-BR.
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Paulo Quicoli
>>>>> Editor Técnico: .NET Magazine, ClubeDelphi Magazine, WebMobile Magazine
>>>>> www.devmedia.com.br
>>>>> http://pauloquicoli.spaces.live.com
>>>>> twitter:@pauloquicoli
>>>>>
>>>>> --
>>>>> Você está recebendo esta mensagem porque se inscreveu no grupo
>>>>> "NHibernate-Br" dos Grupos do Google.
>>>>> Para postar neste grupo, envie um e-mail para
>>>>> nhiber...@googlegroups.com.
>>>>> Para cancelar a inscrição nesse grupo, envie um e-mail para

>>>>> nhibernate-b...@googlegroups.com<nhibernate-br%2Bunsu...@googlegroups.com>


>>>>> .
>>>>> Para obter mais opções, visite esse grupo em
>>>>> http://groups.google.com/group/nhibernate-br?hl=pt-BR.
>>>>>
>>>>
>>>> --
>>>> Você está recebendo esta mensagem porque se inscreveu no grupo
>>>> "NHibernate-Br" dos Grupos do Google.
>>>> Para postar neste grupo, envie um e-mail para
>>>> nhiber...@googlegroups.com.
>>>> Para cancelar a inscrição nesse grupo, envie um e-mail para

>>>> nhibernate-b...@googlegroups.com<nhibernate-br%2Bunsu...@googlegroups.com>


>>>> .
>>>> Para obter mais opções, visite esse grupo em
>>>> http://groups.google.com/group/nhibernate-br?hl=pt-BR.
>>>>
>>>
>>>
>>>
>>> --
>>> Paulo Quicoli
>>> Editor Técnico: .NET Magazine, ClubeDelphi Magazine, WebMobile Magazine
>>> www.devmedia.com.br
>>> www.nhibernatebrasil.net
>>>
>>> http://pauloquicoli.spaces.live.com
>>> twitter:@pauloquicoli
>>>
>>> --
>>> Você está recebendo esta mensagem porque se inscreveu no grupo
>>> "NHibernate-Br" dos Grupos do Google.
>>> Para postar neste grupo, envie um e-mail para
>>> nhiber...@googlegroups.com.
>>> Para cancelar a inscrição nesse grupo, envie um e-mail para

>>> nhibernate-b...@googlegroups.com<nhibernate-br%2Bunsu...@googlegroups.com>


>>> .
>>> Para obter mais opções, visite esse grupo em
>>> http://groups.google.com/group/nhibernate-br?hl=pt-BR.
>>>
>>
>> --
>> Você está recebendo esta mensagem porque se inscreveu no grupo
>> "NHibernate-Br" dos Grupos do Google.
>> Para postar neste grupo, envie um e-mail para
>> nhiber...@googlegroups.com.
>> Para cancelar a inscrição nesse grupo, envie um e-mail para

>> nhibernate-b...@googlegroups.com<nhibernate-br%2Bunsu...@googlegroups.com>


>> .
>> Para obter mais opções, visite esse grupo em
>> http://groups.google.com/group/nhibernate-br?hl=pt-BR.
>>
>
> --
> Você está recebendo esta mensagem porque se inscreveu no grupo
> "NHibernate-Br" dos Grupos do Google.
> Para postar neste grupo, envie um e-mail para
> nhiber...@googlegroups.com.
> Para cancelar a inscrição nesse grupo, envie um e-mail para
> nhibernate-b...@googlegroups.com.
> Para obter mais opções, visite esse grupo em
> http://groups.google.com/group/nhibernate-br?hl=pt-BR.
>
>


--

[]´s

Juliano Oliveira
Analista Desenvolvedor
twitter: @juloliveira - skype: juloliveira

João Paulo Katayama

não lida,
28 de jun. de 2010, 09:36:5528/06/2010
para nhiber...@googlegroups.com
´Por a caso você já tentou fazer Endereço.Pessoa = null ao invés de Pessoa.Endereço = null?
Eu estava com um problema parecido, e dessa forma havia funcionado. Com cascade.AllDEleteOrphan.

Régis Soares

não lida,
29 de jun. de 2010, 11:09:4829/06/2010
para nhiber...@googlegroups.com
João, já tentei isso tb.
 
Desisti dessa forma.
 
No método salvar do repositório de pessoa excluo o endereço sempre, depois o NH se encarrega de salvar.
 
Obrigado a todos que ajudaram.

2010/6/28 João Paulo Katayama <minor...@gmail.com>
Responder a todos
Responder ao autor
Encaminhar
0 nova mensagem