Hibernate继承映射时错误的解决方法

借助于Hibernate强大的O/R Mapping能力,我们能够通过discriminaTor轻易地将一颗继承树映射到一 个表中,通过discriminaTor确定具体映射的子类。

在设置@hibernate.discriminaTor column=”type” type=”integer”后,启动Hibernate报错:

Could not format discriminaTor value to SQL string

搜索Hibernate官方文档后发现问题,原来Hibernate默认的discriminaTor的type是String,当设置 discriminaTor的type为integer后,需要为父类也设置@hibernate.class table=”TABLE_NAME” discriminaTor-value=”not null”,否则,Hibernate默认的discriminaTor-value是完整的类名,在转换 String到int时造成NumberFormatException。

最后运行XDoclet,生成hbm文件:

<?XML version="1.0" encoding="iso-8859-1"?><!DOCTYPE hibernate-mapping PUBLIC"-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><hibernate-mapping><class name="com.crackJ2EE.example.AbstractClass" table="TABLE_NAME" discriminaTor- value="not null"><id name="id" column="id" type="Java.lang.Long" unsaved-value="null">  <generaTor class="increment"/></id><discriminaTor column="type" not-null="true" type="integer"/>  <subclass name="com.crackj2ee.example.SubClass1" discriminaTor-value="1">  <subclass name="com.crackj2ee.example.SubClass2" discriminaTor-value="2"></class></hibernate-mapping>

没有伞的孩子必须努力奔跑!

Hibernate继承映射时错误的解决方法

相关文章:

你感兴趣的文章:

标签云: