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

王朝other·作者佚名  2008-05-31
宽屏版  字体: |||超大  

借助于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>

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有