hibernate - 枚举类的未知名称值 []

标签 hibernate enums

我得到了下面的堆栈跟踪 线程“main”中的异常 java.lang.IllegalArgumentException:枚举类 [com.ecw.pojo.Rating] 的未知名称值 [NC-17] 在 org.hibernate.type.EnumType$NamedEnumValueMapper.fromName(EnumType.java:467) 在 org.hibernate.type.EnumType$NamedEnumValueMapper.getValue(EnumType.java:452) 在 org.hibernate.type.EnumType.nullSafeGet(EnumType.java:107) 在 org.hibernate.type.CustomType.nullSafeGet(CustomType.java:127) 在 org.hibernate.type.AbstractType. Hydro(AbstractType.java:106) 在 org.hibernate.persister.entity.AbstractEntityPersister. Hydro(AbstractEntityPersister.java:2969) 在 org.hibernate.loader.Loader.loadFromResultSet(Loader.java:1695) 在 org.hibernate.loader.Loader.instanceNotYetLoaded(Loader.java:1627) 在 org.hibernate.loader.Loader.getRow(Loader.java:1514) 在 org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:725) 在 org.hibernate.loader.Loader.processResultSet(Loader.java:952) 在 org.hibernate.loader.Loader.doQuery(Loader.java:920) 在 org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:354) 在 org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:324) 在 org.hibernate.loader.Loader.loadCollection(Loader.java:2263) 在 org.hibernate.loader.collection.plan.LegacyBatchingCollectionInitializerBuilder$LegacyBatchingCollectionInitializer.initialize(LegacyBatchingCollectionInitializerBuilder.java:105) 在 org.hibernate.persister.collection.AbstractCollectionPersister.initialize(AbstractCollectionPersister.java:693) 在 org.hibernate.event.internal.DefaultInitializeCollectionEventListener.onInitializeCollection(DefaultInitializeCollectionEventListener.java:92) 在org.hibernate.internal.SessionImpl.initializeCollection(SessionImpl.java:1893) 在 org.hibernate.collection.internal.AbstractPercientCollection$4.doWork(AbstractPercientCollection.java:555) 在 org.hibernate.collection.internal.AbstractPersistentCollection.withTemporarySessionIfNeeded(AbstractPersistentCollection.java:260) 在 org.hibernate.collection.internal.AbstractPersistentCollection.initialize(AbstractPersistentCollection.java:551) 在 org.hibernate.collection.internal.AbstractPercientCollection.read(AbstractPercientCollection.java:140) 在 org.hibernate.collection.internal.PersistentSet.toString(PersistentSet.java:316) 在 java.lang.String.valueOf(String.java:2994) 在 java.io.PrintStream.println(PrintStream.java:821) 在 util.TestMapping.main(TestMapping.java:35)

My enum class as below

public enum Rating {

    G("G"),
    PG("PG"),
    PG13("PG-13"),
    R("R"),
    NC17("NC-17");

    private String value;

    private Rating(String value) {
        this.value = value;
    }

    public String getValue() {
        return value;
    }

    public void setValue(String value) {
        this.value = value;
    }

    public String toString() {
        return this.value; //will return , or ' instead of COMMA or APOSTROPHE
    }
}

实体如下

@Column(name = "rating")
@Enumerated(EnumType.STRING)
private Rating rating;

最佳答案

Hibernate 不关心您的自定义值属性。它使用枚举的名称:NC17,而不是NC-17

如果您想使用 NC-17,您需要一个 Hibernate 自定义类型的 JPA 属性转换器。

关于hibernate - 枚举类的未知名称值 [],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38057886/

相关文章:

c++ - 如何在 C++ 中将 typedef 枚举转换为使用枚举

c++ - 为什么强类型枚举可以用没有static_cast的整数初始化?

c++ - 不允许将强类型枚举用作相同基础类型的参数?

enums - 枚举惰性属性

c++ - 如何在不收到编译器警告的情况下使用 C++ 枚举

java - 在 Hibernate 4 和 Postgres 中使用 "SELECT FOR UPDATE OF"

hibernate - 删除对象但将子对象保留为孤儿而不出现 "a foreign key constraint fails"错误?

java - 使用hibernate从表中获取数据

java - Hibernate 5.2 加密配置属性

mysql - 数据类型 varchar 和 ntext 在 add 运算符中与 hibernate 不兼容