程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> Hibernate繼承映射“Could not format discriminator”錯誤解決

Hibernate繼承映射“Could not format discriminator”錯誤解決

編輯:關於SqlServer

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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved