Problema com relacionamento do Hibernate - Resolvido

Possuimos duas tabelas FaturaContratos e Faturas elas se relacionam por um campo chamado id_Fatura que é PK em Faturas e FK em FaturaContratos.
O problema é faturaContratos.getFaturas nos retorna um set de faturas, entretanto estas faturas do set possuem um idFatura diferente do idFatura de FaturaContratos.
Agradeço desde já.
Os relacionamentos estão da seguinte forma:
FaturaContratos

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 8-Feb-06 11:05:10 AM by Hibernate Tools 3.1.0.beta4 -->
<hibernate-mapping>
    <class name="br.com.insite.billing.pojo.FaturaContratos" table="FaturaContratos" catalog="billingTest" lazy="false">
        <id name="idFaturaContrato" type="java.lang.Integer">
            <column name="id_FaturaContrato" />
           <!-- <generator class="assigned" /> -->
           <generator class="increment" />
        </id>
        <property name="timestamp" type="timestamp" column="timestamp"/>
        <property name="idContrato" type="int">
            <column name="id_Contrato" not-null="true" />
        </property>
        <property name="idFatura" type="java.lang.Integer">
            <column name="id_Fatura" not-null="true"/>
        </property>
        <property name="precoVenda" type="big_decimal">
            <column name="preco_venda" precision="13" />
        </property>
        <property name="codigoTes" type="short">
            <column name="codigo_TES" />
        </property>
        <property name="quantidade" type="int">
            <column name="quantidade" />
        </property>
        <property name="obs" type="string">
            <column name="obs" length="65535" />
        </property>
        <property name="desconto" type="float">
            <column name="desconto" precision="12" scale="0" />
        </property>
        <property name="idResumen" type="int">
            <column name="id_Resumen" not-null="true" />
        </property>
        
        <set name="faturas" inverse="true" lazy="false" >
            <key column="id_Fatura"/>
            <one-to-many  class="br.com.insite.billing.pojo.Faturas"/>
        </set>
    </class>
</hibernate-mapping>

Faturas

<?xml version="1.0"?>

<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping>

    <class name="br.com.insite.billing.pojo.Faturas" table="Faturas" catalog="billingTest" lazy="false">
        <id name="idFatura" type="java.lang.Integer">
            <column name="id_Fatura" />
            <!--<generator class="assigned" />-->
            <generator class="increment" />
        </id>
        <property name="timestamp" type="timestamp" column="timestamp"/>
        <property name="idFormaPagamento" type="short">
            <column name="id_FormaPagamento" not-null="true" />
        </property>
        <property name="tipoFaturamento" type="string">
            <column name="tipo_faturamento" length="2" not-null="true" />
        </property>
        <property name="jurosMensal" type="big_decimal">
            <column name="juros_mensal" precision="5" scale="3" />
        </property>
        <property name="flagExportacao" type="java.lang.Short">
            <column name="flag_exportacao" />
        </property>
        <property name="status" type="java.lang.Short">
            <column name="status" />
        </property>
    </class>
    
</hibernate-mapping>

Bem, faz muito tempo que nao trabalho diretamente com o mapiamento do hibernate… entao se falar alguma coisa errada me corrigam.

Tem um erro na sua logica.
Voce diz que id_faturas é uma FK em faturaContratos, isto é, uma relacao N para 1 (varias faturas contrato para uam fatura)

entao o codigo “faturaContratos.getFaturas” nao pode funcionar :slight_smile:

O correto seria tu colocar o no faturas, e utilizar o codigo assim: faturas.getFaturasCotratos()

e/ou colocar uma relacao em FaturasContratos e usar assim: faturasContratos.getFatura() (isto vai retornar so uma fatura)

Olá,

O relacionamento de FaturaContratos para Faturas é 1 para N, ou seja uma FaturaContrato para varias Faturas.

Obrigado pela resposta.

Entao a fk deveria estar em Fatura e nao em FaturaContrato como voce disse no primeiro post…

veja, seu mapiamento esta incorreto…

Olá maxguzenski, cara muito obrigado eu colquei o relacionamento da forma que você sugeriu e funcionou.

Muito Obrigado.