Question

J'ai une relation en option entre deux classes. Hibernate traduit la propriété pour être facultative en définissant les clés étrangères sur NULL.

Mon Schema DB ne permet pas aux colonnes d'être nulles. La propriété à option est représentée par la valeur par défaut de ces colonnes.

<class name="sth.Alpha" ...>
    ....
    <many-to-one name="beta" not-found="ignore" class="sth.Beta" insert="true" update="true">
        <column name="a1/>
        <column name="a2/>
    </many-to-one>
</class>

<class name="sth.Alpha" ...>
    <composite-id>
        <key-property name="b1" type="int">
            <column name="b1" precision="8" scale="0"/>
        </key-property>
        <key-property name="b2" type="int">
            <column name="b2" precision="8" scale="0"/>
        </key-property>
    </composite-id>
</class>

La sélection des données n'est pas un problème en raison de not-found="ignore" dans le may-to-one-tag, cela entraînera un null-beta-objet. Mais si je veux insérer un Alpha? avec beta mis à null. J'obtiens une exception, qu'il n'est pas possible d'insérer null à a1 et a2.

Je me débarrasse de ce problème si je mets insert et update à false. Mais cela se traduit par ne pas enregistrer la relation si elle est définie.

La base de données ne peut pas être modifiée et la version hibernate est fixée à 3,5

Je serais aussi heureux si tu me dis que ce n'est pas possible

Était-ce utile?

La solution

comment utiliser 0 au lieu de null en collaboration avec <id unsavedvalue="whatever"> pourrait aider

ou

Autre solution

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top