Hibernate映射枚举到varchar

ipa*_*lic 19 enums varchar hibernate hibernate-mapping

假设我有这个枚举:

public enum TestEnum { EXAMPLE, FURTHER_EXAMPLE, LAST_EXAMPLE }
Run Code Online (Sandbox Code Playgroud)

使用此映射.hbm:

<property name="testEnum" column="TEST_COLUMN">
    <type name="org.hibernate.type.EnumType">
        <param name="enumClass">p.a.c.k.TestEnum</param>
    </type>
 </property>
Run Code Online (Sandbox Code Playgroud)

枚举被发送到数据库0,1,2.我想的值,以代替存储为EXAMPLE,FURTHER_EXAMPLELAST_EXAMPLE在varchar列.

如何将枚举映射到varchar列?

小智 16

也许这更具描述性

<param name="useNamed">true</param>
Run Code Online (Sandbox Code Playgroud)


bvu*_*laj 15

将其添加为EnumType的参数:

<param name="type">12</param>
Run Code Online (Sandbox Code Playgroud)

这是因为12它等同于java.sql.Types.VARCHAR

  • 12相当于java.sql.Types.VARCHAR. (4认同)
  • 我在浏览解决方案时看到了这个值,但认为它是枚举的默认值.它不是很具描述性,看起来像一个神奇的价值.谢谢! (2认同)

mon*_*nim 6

你可以使用这样的注释:

public class MyClass {
    TestEnum testEnum;
    @column(name="TEST_COLUMN")
    @Enumerated(EnumType.STRING)
    public TestEnum getTestEnum(){
        this.testEnum;
    }
}
Run Code Online (Sandbox Code Playgroud)