nhibernate<;子类>&书信电报;加入>;嵌套另一个子类映射(导致重复插入叶类)
这个映射有什么问题? 保存Class3实例时,将插入表2中的两行 第一行的Column4设置为null,Column3的值正确, 第二行的Column3设置为null,Column4的值正确nhibernate<;子类>&书信电报;加入>;嵌套另一个子类映射(导致重复插入叶类),nhibernate,nhibernate-mapping,Nhibernate,Nhibernate Mapping,这个映射有什么问题? 保存Class3实例时,将插入表2中的两行 第一行的Column4设置为null,Column3的值正确, 第二行的Column3设置为null,Column4的值正确 <class name="Class1" table="Table_1"> <id name="Column1"> <generator class="native" /> </id> <discriminator
<class name="Class1" table="Table_1">
<id name="Column1">
<generator class="native" />
</id>
<discriminator column="ColumnDisc" />
<property name="Column2" type="int" />
<subclass name="Class2">
<join table="Table_2">
<key column="Column1" />
<property name="Column3" type="int" />
</join>
<subclass name="Class3" >
<join table="Table_2">
<key column="Column1" />
<property name="Column4" type="int" />
</join>
</subclass>
</subclass>
</class>
在哪里设置每个派生类型的鉴别器值 如果我相信您在评论中指出的链接,则类映射如下所示:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.javalobby.tnt.hib.User" table="USER" lazy="false">
<id name="id" type="long" column="ID">
<generator class="identity" />
</id>
<discriminator column="type" type="string"/>
<property name="firstName" column="first_name"/>
<property name="lastName" column="last_name"/>
<subclass name="com.javalobby.tnt.hib.Employee" discriminator-value="employee">
<join table="employee">
<key column="id"/>
<property name="jobTitle" column="job_title"/>
<many-to-one name="supervisor" column="supervisor_id" not-null="true" />
</join>
<subclass name="com.javalobby.tnt.hib.Employer" discriminator-value="employer">
<set name="subordinates">
<key column="supervisor_id" not-null="true"/>
<one-to-many class="com.javalobby.tnt.hib.Employee"/>
</set>
<join table="employer">
<key column="id"/>
<property name="companyCarBrand" column="company_car_brand"/>
</join>
</subclass>
</subclass>
</class>
确保为要映射的每个子类设置了正确的鉴别器值。我建议尝试一下,看看是否效果更好,或者这是否引发了另一个问题。=)
希望这有帮助!=) 这看起来不是一个有效的映射。是的。我已经测试了我所说的。Hibernate确实实现了本文最后一节中所述的场景:谢谢,朋友,也许它会解决问题,我必须测试它:-)我很高兴我能帮上忙!这就是为什么
<class name="Class1" table="Table_1">
<id name="Column1">
<generator class="native" />
</id>
<discriminator column="ColumnDisc" />
<property name="Column2" type="int" />
<subclass name="Class2"> <!-- The discriminator-value="" is missing here... -->
<join table="Table_2">
<key column="Column1" />
<property name="Column3" type="int" />
</join>
<subclass name="Class3" > <!-- The discriminator-value="" is missing here... -->
<join table="Table_2">
<key column="Column1" />
<property name="Column4" type="int" />
</join>
</subclass>
</subclass>
</class>