Question

class A {..} 
class ContainedA { property of type A and some extra information }
class B : A { collection of type ContainedA  }

Comme vous pouvez le dire, l'idée est de pouvoir contenir une seule instance de A dans plusieurs B, B lui-même est également de type A seul il peut contenir d'autres A

Mappage de A et B

  <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
    namespace="REDACTED"
    assembly= "REDACTED">

    <class name="A" table="A" discriminator-value="1">
        <id name="Id" column="Id" type="int" access="field.camelcase-underscore">
            <generator class="identity" />
        </id>

        <discriminator column="Type" type="int"/>

        <subclass name="B" extends="A" discriminator-value="2">
            <bag name="ContainedAs" cascade="all">
                <key column="AInternalId"/>
                <one-to-many class="ContainedA"/>
            </bag>
        </subclass>

    </class>
</hibernate-mapping>

La cartographie pour contenua

    <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
    namespace="REDACTED"
    assembly= "REDACTED">

    <class name="ContainedA" table="ContainedA">
        <id name="Id" type="int" access="field.camelcase-underscore" column="Id">
            <generator class="identity" />
        </id>
        <many-to-one name="A" class="A" column="ContainedAInternalId" cascade="save-update"/>
        <property name="SomeOtherInfoString" column="SomeOtherInfoString" not-null="true"/>
    </class>
</hibernate-mapping>

Mon problème est que lorsque j'enregistre le conteneur B, il ne sauve pas sa collection contenue et non les A réels contenus. Ceci est censé être robuste, B peut être affecté à la fois existant et aucun AS existant et je souhaite effectuer une seule session.save (b) et tout enregistrer.

Votre aide en la matière serait grandement appréciée.

EDIT: a trouvé une erreur dans l'un des HBM d'origine le corrigé, ne fonctionne toujours pas

Pas de solution correcte

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