Hibernate - associação many-to-one não gravada no banco

Pessoal,

Eu estou enfrentando um problema ao incluir ou atualizar um objeto Exame. Segue abaixo o HBM:

Exame.hbm.xml


<!DOCTYPE hibernate-mapping PUBLIC
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
    
<hibernate-mapping>
<!-- 
    Created by the Middlegen Hibernate plugin 2.2

    http://boss.bekk.no/boss/middlegen/
    http://www.hibernate.org/
-->

<class 
    name="Exame" 
    table="exame"
>

    <composite-id name="comp_id" class="ExamePK">
        <key-property 
            name="cdUnidade" 
            column="cd_unidade" 
            type="java.lang.Integer"
            length="4"
        />
        <key-property 
            name="cdExame" 
            column="cd_exame" 
            type="java.lang.Integer"
            length="4"
        />
    </composite-id>    

    <many-to-one
        name="paciente"
        class="Paciente"
        not-null="true"
        update="false"
	insert="false"
    >
        <column name="cd_paciente" />
        <column name="cd_unidade" />
    </many-to-one>

</class>
</hibernate-mapping>

O problema é que a associação com paciente não é persistida, devido ao update="false insert=“false”. Porém caso não existir essa configuração, ocorre o erro de mapeamento “org.hibernate.MappingException: Repeated column in mapping for entity: Exame column: cd_unidade (should be mapped with insert=“false” update=“false”)”.

Ou seja, exame tem como pk(cd_exame e cd_unidade) e paciente pk(cd_paciente e cd_unidade). Mas é necessário persistir a referência ao paciente ao incluir ou atualizar o exame.

Alguma idéia?

[]'s

Já tentou:

?

Sim, tentei… mas não funcionou pq eu tenho que colocar update=“false” insert=“false”, se não dá erro de mapeamento.
Alguma outra idéia?

Retire as colunas cd_paciente e cd_unidade… elas já estão mapeadas junto ao POJO Paciente e Unidade…

a única diferença vai ser nos hqls que você vai ter que pegar essas informações de Paciente e Unidade e não mais de PacienteUnidade :slight_smile:

Abraços…