关于HIbernate继承映射中WrongClassException的解决方案
类
public class House{
private Set<Picture> pictures = new HashSet<Picture>();
}
| public class NewHouse extends House{
}
| public class Villa extends House{
}
| public class Picture{
private House house;
}
| 映射文件
House的映射文件
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!--
Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
<class name="com.tj.house.domain.House" table="House" schema="dbo" catalog="House4" lazy="false" abstract="true">
<id name="id" type="java.lang.Integer">
<column name="id" />
<generator class="native" />
</id>
<set name="pictures" inverse="true" lazy="false" cascade="all" >
<key>
<column name="houseId" />
</key>
<one-to-many class="com.tj.house.domain.Picture" />
</set>
<joined-subclass name="com.tj.house.domain.Villa" table=”Villa”>
<key column=”id/>”
</joined-subclass >
<joined-subclass name="com.tj.house.domain.NewHouse" table=”NewHouse”>
<key column=”id”/>
</joined-subclass >
</class>
</hibernate-mapping>
| 数据库表设计
子类和超类分别对应一个表
相当于子类和超类是一对一的关系,所以子类的id设成一对一的模式
|
|