Mapeamento many-to-one com chave composta e Coluna de Outra Tabela

191 views
Skip to first unread message

Giulliano

unread,
Feb 15, 2012, 12:41:00 PM2/15/12
to NHibernate-Br
Olá estou precisando URGENTE de uma mãozinha de quem entende mais de
NHibernate.
Estou mapeando uma classe chamada ItemDaColeta, nesta classe eu tenho
uma propriedade <many to one> chamada Produto, este produto possue
chave composta. Uma das chaves é o campo ProCodigo e a outra é o campo
EmpCodigo. Aí entra meu problema, a tabela ItemDaColeta não possui a
coluna EmpCodigo, esta coluna deveria ser herdada de uma outra tabela
chamada Coleta.
Como utilizar esta coluna da tabela Coleta para servir de chave neste
mapeamento????
A tabela Coleta está relacionada a tabela ItemDaColeta pelo campo
ColCodigo. Abaixo estou enviando o mapeamento completo da minha
classe. Se alguem já passou por isso ou tem alguma ideia de como sair
desta situação, por favor não pense duas vezes antes de dar opinião.
Obrigado.


<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
assembly="Sox.Dominio"
namespace="Sox.Dominio.Comprador"
default-lazy="false">
<class name="Sox.Dominio.Comprador.ColetaItens"
table="ProdutoColeta" lazy="false">

<id name="Id" column= "ProColCodigo" access="nosetter.camelcase-
underscore">
<generator class="native" />
</id>

<property name="Descicao" column="ProColDescricao" not-
null="false"/>
<property name="Quantidade" column="ProQuantidade" not-
null="false"/>
<property name="QuantidadePedida" column="ProColQuantPedida" not-
null="false"/>
<property name="Preco" column="ProColPreco" not-null="false"/>

<property name="UltimoPreco" column="ProColUltimoPreco" not-
null="false"/>
<property name="Unidade" column="ProUnidadeConvertida" not-
null="false"/>
<property name="UnidadeConvertida" column="ProColUnidadeConversao"
not-null="false"/>
<property name="FatorDeConversao" column="ProColFatorConversao"
not-null="false"/>


<property name="ProdutoSimilar" column="ProSimilar" not-
null="false"/>
<property name="ComPedido" column="ProColPedido" not-null="false"/
>

<property name="Historico" column="ProColHistorico" not-
null="false"/>
<property name="Ipi" column="ProColIPI" not-null="false"/>
<property name="Saldo" column="ProColSaldo" not-null="false"/>

<many-to-one name="Produto"
class="Sox.Dominio.Orcamento.Produto,
NHibernateManyToOne"
cascade="none" not-found="ignore">
<column name="ProCodigo"/>
<column name="EmpCodigo"/>
</many-to-one>

<many-to-one name="Ficha"
class="Sox.Dominio.Orcamento.FichaDeProduto,
NHibernateManyToOne"
column="FicProCodigo" cascade="none" not-
found="ignore" />

<many-to-one name="Coleta"
class="Sox.Dominio.Comprador.Coleta,
NHibernateManyToOne"
column="ColCodigo" cascade="none" not-found="ignore" />

</class>
</hibernate-mapping>

Edgar Muniz Berlinck

unread,
Feb 15, 2012, 1:12:12 PM2/15/12
to nhiber...@googlegroups.com
Guilianno.

Sendo a entidade ItemDaColeta um many to many entre Coleta e Produto, eu adotaria a seguinte abordagem:

Em Coleta eu teria um List<Produto>. Desta forma você consegue carregar uma coleta e seus respectivos produtos sem a necessidade da entidade ItemDaColeta.

--
Edgar Muniz Berlinck
http://edgarberlinck.blogspot.com
http://edgarberlinck.wordpress.com/
http://about.me/edgarberlinck

Follow me on Twitter: http://twitter.com/@edgarberlinck

"Você pode passar a vida inteira chorando, ou pode passar a vida inteira vendendo lenços. A escolha é sua, e de mais ninguém."

Giulliano

unread,
Feb 15, 2012, 1:54:19 PM2/15/12
to NHibernate-Br
Isso não resolveria meu problea pois assim eu perderia a relação
direta entre ItemDaColeta E Produto o que é muito importante no
projeto. Sem contar que esta é apenas uma das classes mapeadas que
possuem este problema.
Alterar o dominio da classe não é uma opção.
Mas valeu por ter respondido.

Marcos Paulo Nascimento

unread,
Jul 20, 2020, 8:18:57 AM7/20/20
to NHibernate-Br
Giulianno,

Consguiu resolver o seu problema, estou passando por algo semelhante. Preciso mapear uma chave composta no nhibernate mas não estou conseguindo.

Se pudar postar sua classe de mapeamento eu agradeço.
Reply all
Reply to author
Forward
0 new messages