Hibernate继承映射时错误的解决方法
2008-01-05 18:57:12 来源:WEB开发网核心提示:借助于Hibernate强大的O/R Mapping能力,我们能够通过discriminator轻易地将一颗继续树映射到一个表中,Hibernate继承映射时错误的解决方法,通过discriminator确定具体映射的子类, 在设置@hibernate.discriminator column="type&q
借助于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高级应用:性能优化策略
- ››hibernate 多对多关系详解(包括中间表,一对多字表...
- ››Hibernate实现mysql数据库limit查询方法
- ››Hibernate 之父:是时候升级到Java EE 6了
- ››Hibernate查询
- ››Hibernate和iBATIS比较(摘自网络)
- ››Hibernate使用Projections进行聚合操作
- ››hibernate中java.util.Date类型映射
- ››hibernate中update与saveOrUpdate的区别
- ››Hibernate各种映射关系总结
- ››Hibernate过滤器使用窍门
- ››Hibernate属性查询简单讲述
更多精彩
赞助商链接