2012-11-02 85 views
2

這裏的一個是例外 - pastebin休眠無法保存實體領域爲ENUM

Caused by: java.sql.SQLException: Unknown Parameter: 13 
    at com.google.cloud.sql.jdbc.ParameterMetadata.getParameterType(ParameterMetadata.java:45) 
    at org.hibernate.type.EnumType.nullSafeSet(EnumType.java:121) 
    at org.hibernate.type.CustomType.nullSafeSet(CustomType.java:155) 
    at org.hibernate.persister.entity.AbstractEntityPersister.dehydrate(AbstractEntityPersister.java:2705) 
    at org.hibernate.persister.entity.AbstractEntityPersister.dehydrate(AbstractEntityPersister.java:2682) 
    at org.hibernate.persister.entity.AbstractEntityPersister$4.bindValues(AbstractEntityPersister.java:2863) 
    at org.hibernate.id.insert.AbstractReturningDelegate.performInsert(AbstractReturningDelegate.java:57) 
    ... 111 more 

枚舉在我的Hibernate映射 -

<property name="userStatus" column="user_status" insert="true" update="true" index="true"> 
    <type name="org.hibernate.type.EnumType"> 
    <param name="enumClass">com.tutorial.enums.UserStatus</param> 
    <param name="type">12</param> 
    </type> 
</property> 
<property name="userType" column="user_type" insert="true" update="true" index="true"> 
    <type name="org.hibernate.type.EnumType"> 
    <param name="enumClass">com.tutorial.enums.UserType</param> 
    <param name="type">12</param> 
    </type> 
</property> 

我的實體具有用戶類型和UserStatus爲枚舉。 Hibernate無法正確轉換枚舉。我應該切換回休眠3,因爲在另一個項目(與休眠3)我有我自己的自定義類型,它工作得很好。我現在正在使用休眠4.1.7。

回答

2

添加

<param name="useNamed"></param> 

,它應該工作的罰款。

<property name="userType" column="user_type" insert="true" update="true" index="true"> 
    <type name="org.hibernate.type.EnumType"> 
    <param name="enumClass">com.tutorial.enums.UserType</param> 
    <param name="type">12</param> 
    <param name="useNamed"></param> 
    </type> 
</property> 

編輯:

<param name="useNamed"></param> 

必須在那裏,但如果將其留空,然後枚舉將被序列化爲序數,如果你做數據庫的手動工作,這是不是非常有幫助,所以如果你想得到的名稱,那麼它必須是

<param name="useNamed">true</param> 
+0

現在我看到你問同樣的問題前面我已經回答了那裏,但我已經在這裏回答也讓我們離開它是... – Marek

+0

我沒有得到任何錯誤現在但是沒有任何枚舉值被填充到mysql表中。 – Shwetanka

+0

當我將它的值設置爲true時,它會給我'數據截斷列'錯誤。而我的表格定義是絕對正確的。我猜這個版本的hibernate是非常麻煩的,我嘗試了ebean。 – Shwetanka