2

ここに例外があります - ペーストビン

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

列挙型は私の休止状態のマッピングにあります -

<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>

私のエンティティには、列挙型として UserType と UserStatus があります。Hibernate は列挙型を適切に変換できません。別のプロジェクト(hibernate 3を使用)で独自のカスタムタイプがあり、完全に正常に機能していたため、hibernate 3に戻す必要があります。現在、休止状態 4.1.7 を使用しています。

4

1 に答える 1

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>
于 2012-11-05T22:33:34.077 に答える