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>

时间: 2024-09-20 05:38:49

Hibernate继承映射时错误的解决方法的相关文章

使用存储过程时一个错误的解决方法。

存储过程|错误|解决 这段时间用了一下C++ Builder ,在调用存储过程的时候遇到了一些问题,问了很多地方都没有找到答案,最后还是靠自己,现在拿出来和大家分享. 示例代码:    StoredProc1->Params->Clear();   StoredProc1->Params->CreateParam( ftSmallint, "@m1",   ptInput);   StoredProc1->Params->CreateParam( f

使用存储过程时一个错误的解决方法

存储过程|错误|解决 jackxm(原作) 这段时间用了一下C++ Builder ,在调用存储过程的时候遇到了一些问题,问了很多地方都没有找到答案,最后还是靠自己,现在拿出来和大家分享. 示例代码:    StoredProc1->Params->Clear();   StoredProc1->Params->CreateParam( ftSmallint, "@m1",   ptInput);   StoredProc1->Params->Cre

解析使用存储过程时一个错误的解决方法

这段时间用了一下C++ Builder ,在调用存储过程时遇到了一些问题,问了很多人都没有找到答案,最后还是靠自己解决了问题,现在拿出来和大家分享. 示例代码: StoredProc1->Params->Clear();StoredProc1->Params->CreateParam( ftSmallint, "@m1", ptInput);StoredProc1->Params->CreateParam( ftString, "@m2&q

消息印射-两个MFC类实现多重继承,虚继承基类时候派生类的消息映射出错,求解决方法

问题描述 两个MFC类实现多重继承,虚继承基类时候派生类的消息映射出错,求解决方法 一个类实现了可悬浮侧靠的对话框,另一个类实现了有滑动条的对话框,然后我就想到了多重继承来实现一个可悬靠带滑动条的对话框.由于看书上说要虚继承基类,并且在初始化成员类表中显示初始化基类,这些都有做,但是在消息印射部分出了问题. 这里编辑代码不方便,详细情况在帖子中 http://bbs.csdn.net/topics/390871222 不胜感激

JSP中内建exception对象时出现500错误的解决方法_JSP编程

本文实例讲述了JSP中内建exception对象时出现500错误的解决方法.分享给大家供大家参考,具体如下: 尝试使用JSP的内建exception对象,写了下面三个文件.思路很简单,文件index若提交字串为空,则get抛出异常,交由error.jsp处理.但实际却不能正常运行,会出现IE的500错误页面.环境为Tomcat 5.5,IE6.0. 在sun的论坛上有人贴出了原因,是IE的某个设置.Tomcat5.0以后的版本error page在处理时会返回error code 500.而IE

win7连接VPN时提示800错误怎么办 连接VPN时提示错误800解决方法

win7连接VPN时提示错误800解决方法 1.重启电脑并关闭网络连接,然后将软件和硬件的防火墙关闭掉,电脑杀毒软件自带的防火墙和路由器等设备的防火墙. 2.将VPN设备端口1723上的TCP协议中的窗口大小修改为0. 3.重新配置VPN主机的网络设置. 4.如果无法解决,建议联系设备制造商进行解决. 以上就是关于win7系统设置vpn虚拟连接教程介绍了,通过以上分享后,遇到相同问题的用户,请参照以上方法设置吧.

win7连接路由器时提示5007错误怎么办 路由器提示5007错误的解决方法教程

win7连接路由器时提示5007错误的解决方法教程 1.首先确定无线路由器的线路连接是正确且正常的; 2.在地址栏中输入192.168.1.1后按回车,打开无线路由器的设置窗口; 3.无线路由器的默认账户和密码都是admin,直接输入然后就可以登陆; 4.在左侧窗口中,点击的络设置,在wan口设置中选静态IP,输入运营商给你的IP子网:255.255.0.0 网关:输入DNS地址,这个DNS的地址是可以查询的; 5.完成后,需要开启自己的无线网络,然后设置密钥,设置完成后点击保存参数,重启无线路

编译apahce时出现httpd-2.2.22/srclib/apr-util错误的解决方法

编译httpd-2.2.22/srclib/apr-util错误的解决方法,本文版权所有风信网 http://www.ithov.com 实测方法. 今天在编译apache时,出现如下问题: make[3]: Entering directory `/tmp/httpd-2.2.22/srclib/apr-util/xml/expat'/bin/sh ./conftools/mkinstalldirs /usr/local/apache2/lib /usr/local/apache2/inclu

win8应用商店出现0x80073cf9错误的解决方法

本教程为大家介绍在使用windows 8应用商店时出现0x80073cf9错误的解决方法. 打开 Win8 应用商店,安装Win8应用的时候,如果出现 未安装此应用 – 查看详细信息,出现了问题,此应用无法安装.请再试一次.错误代码:0x80073cf9 解决方法很简单:在C:Windows 建立 auinstallagent 文件夹就可以解决了. 出现这种情况,可能是一些清理软件,清理空文件夹的时候,把 auinstallagent 文件夹也给消失了!