Hibernate继承映射“Could not format discriminator”错误解决

1515人阅读 评论(0) 收藏 举报

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

 

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

Could not format discriminator value to SQL string

 

搜索Hibernate官方文档后发现问题,原来Hibernate默认的discriminatortypeString,当设置discriminatortypeinteger后,需要为父类也设置@hibernate.class table="TABLE_NAME" discriminator-value="not null",否则,Hibernate默认的discriminator-value是完整的类名,在转换Stringint时造成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.javaeedev.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.javaeedev.example.SubClass1" discriminator-value="1">

        <subclass name="com.javaeedev.example.SubClass2" discriminator-value="2">

    </class>

</hibernate-mapping>

 
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:5733439次
    • 积分:61059
    • 等级:
    • 排名:第36名
    • 原创:1236篇
    • 转载:326篇
    • 译文:42篇
    • 评论:2890条
    公告
    • * GitHub 上 Star 数最多的 Java 博客 Solo
    • * Golang 黑科技之在线 IDE Wide
    • * 黑客与画家的社区 Sym

    欢迎加入开源技术 Q 群:13139268,让学习和分享成为一种习惯!
    文章分类
    最新评论