提问者:小点点

枚举类的未知名称值[]


我在线程“main”java.lang.IllegalArgumentException:org.hibernate.type.EnumType$NamedEnumValueMapper.fromName(EnumType.java:467)处的枚举类[com.ecw.pojo.Rating]的名称值[NC-17]未知,位于org.hibernate。type.EnumType.NamedEnumValue Mapper.getValue(EnumType.java:452),位于org.hibernate.type.CustomType.nullSafeGet(CustomType.java:127),位于org.hibernaate.type.AbstractType.hydrate(AbstractType.java:106),位于org.hhibernate.persister.entity.Abstract EntityPersister.hydrate(AbtractEntityPersister.java:2969),位于org.hhibernae.loader.loader.loader.loader.loadFromResultSet(loader.java:1695),位于org.hibernate.loader.loader.loader.getRow(loader.java:1514),位于org.hibernate.loader.loader.getRowFromResultSet(loader.java.725),位于org.hibeernate.loader.loader.processResultSet(loader.java:952)(Loader.java:324)位于org.hibernate.Loader.Loader.Loader.loadCollection(Loader.java.2263)位于org.hibernate.Loader.collection.plan.LegacyBatchingCollectionInitializerBuilder$LegacyBatching CollectionInitializer.initialize(LegacyBatchngCollectionInitializer.java:105)位于org.hibernate.persister.collection.AbstractCollectionPersister.initializeorg.hibernate.event.internal.DefaultInitializeCollectionEventListener.onInitializeCollection(DefaultInitializeCollectionEvent Listener.java:92)位于org.hibernate.internal.SessionImpl.initializeCollection(SessionImpl.java:1893)位于org.hibernate.collection.internal.AbstractPersistentCollection$4.doWork(AbstractPersistentCollection.java:555)位于org.hibernate.collection.internal.AbstractPersistentCollection.withTemporarySessionfNeeded(AbstractPersistentCollection.java:260)位于org.hibernal.collection.internal.AbstractPersistentCollection.initize(Abstract PersistentCCollection.java:551)位于org.hibernate.cocollection.internal.AbstractPermistentCollect.readorg.hibernate.collection.internal.PersistentSet.toString(PersistentSt.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;

共1个答案

匿名用户

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

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