Hibernate version: 3.2.4ga
Mapping documents:
Code:
<hibernate-mapping default-access="field">
<class name="org.escapek.core.domain.Node" table="NODES">
<id name="Id" column="NODE_ID">
<generator class="uuid"/>
</id>
<property name="instanceName" column="INSTANCE_NAME"/>
<property name="creationDate" column="CREATION_DATE"/>
<property name="lastModifiedDate" column="LAST_MODIFIED_DATE"/>
<property name="deletedDate" column="DELETE_DATE"/>
<property name="status" column="STATUS"/>
<many-to-one name="owner" column="OWNER_FK" lazy="false" />
<many-to-one name="creationUser" column="CREATION_USER_FK" lazy="false" />
<many-to-one name="lastModifiedUser" column="LAST_MODIFIED_USER_FK" lazy="false" />
<many-to-one name="deleteUser" column="DELETE_USER_FK" lazy="false" />
<set name="notes" inverse="true">
<key column="COMMENTED_NODE_FK"/>
<one-to-many class="org.escapek.core.domain.Comment"/>
</set>
<joined-subclass name="org.escapek.core.objectmanager.domain.MOFLibrary" table="MOF_LIBRARY">
<key column="NODE_ID"/>
<property name="name" column="NAME"/>
<property name="description" column="DESCRIPTION"/>
<many-to-one name="parentLibrary" column="PARENT_LIBRARY_FK" lazy="false" />
<map name="childrenLibs" inverse="true" lazy="true">
<key column="PARENT_LIBRARY_FK"/>
<map-key column="name" type="string"/>
<one-to-many class="org.escapek.core.objectmanager.domain.MOFLibrary"/>
<filter name="nodeStatus" condition=":nodeStatusParam = MOF_LIBRARY.STATUS"/>
</map>
<map name="childrenFiles" inverse="true" lazy="true">
<key column="LIBRARY_FK"/>
<map-key column="name" type="string"/>
<one-to-many class="org.escapek.core.objectmanager.domain.MOFFile"/>
<filter name="nodeStatus" condition=":nodeStatusParam = STATUS"/>
</map>
</joined-subclass>
<joined-subclass name="org.escapek.core.objectmanager.domain.MOFFile" table="MOF_FILE">
<key column="NODE_ID"/>
<property name="name" column="NAME"/>
<property name="description" column="DESCRIPTION"/>
<many-to-one name="library" column="LIBRARY_FK" lazy="false" />
<property name="content" column="CONTENT" type="text" length="100000"/>
</joined-subclass>
<filter name="nodeStatus" condition=":nodeStatusParam = STATUS"/>
</class>
<filter-def name="nodeStatus">
<filter-param name="nodeStatusParam" type="string"/>
</filter-def>
</hibernate-mapping>
Avec ce mapping, j'ai un problème lors de la lecture d'une des collections déclarées dans les classes MOFFile et MOFLibrary. L'erreur remonte directement de la base de données et m'indique que la colonne STATUS n'existe pas.
D'apèrs ce que j'en comprend, la table correspondant à la sous-classe n'est pas jointe avec sa classe mère et du coup la condition du filtre plante car la colonne sur laquelle s'applique le filtre n'est pas sélectionnée.
D'autre part, est-il normal qu'il faille redéclarer le filter dans le map ?[/code]