[hibernate-issues] [Hibernate-JIRA] Created: (HHH-6351) Enum Bug when using OK word inside of a enum being retrieved

Lucas Arruda (JIRA) noreply at atlassian.com
Wed Jun 22 15:01:53 EDT 2011


Enum Bug when using OK word inside of a enum being retrieved
------------------------------------------------------------

                 Key: HHH-6351
                 URL: http://opensource.atlassian.com/projects/hibernate/browse/HHH-6351
             Project: Hibernate Core
          Issue Type: Bug
          Components: annotations
    Affects Versions: 3.6.5, 3.3.0.GA
         Environment: Hibernate version 3.3.0.GA, 3.6.5.Final with hibernate-annotations 3.4.0.GA. Oracle database.
            Reporter: Lucas Arruda
            Priority: Minor


I have a class with a field which is an enum, which is mapped by a enum called Status.
The class is described (simplified and without all annotations) above:

public class A {
    private Status status;
    public enum Status { OK, NOK, NAP }
    
    @Column(name = "STATUS")
    @Enumerated(EnumType.STRING)
    public Status getStatus() {
        return status;
    }
    ...
}

The thing is. I can store a record from A with status = 'OK', 'NOK' or 'NAP' perfectly. But, when I try to retrieve that record, if status = 'NOK' or 'NAP' it works correctly, but no with status = 'OK', which gives me an exception:

java.lang.IllegalArgumentException: Unknown name value for enum class com.a.b.c.d.A$Status: OK
        at org.hibernate.type.EnumType.nullSafeGet(EnumType.java:113)
...
Caused by: java.lang.IllegalArgumentException: No enum const class com.a.b.c.d.A$Status.OK
        at java.lang.Enum.valueOf(Enum.java:196)
        at org.hibernate.type.EnumType.nullSafeGet(EnumType.java:110)

Reported a StackOverflow [1] and now one could solve this using 'OK' in the Enum.


What I did to solve this, since I couldn't get I done with OK, was to change a little bit the enum with this, which works correctly:


    public enum Status {
        _OK("OK"), 
        NOK("NOK"), 
        NAP("NAP");
        
        private String desc;
                        
        public String getDesc() {
            return desc;
        }
        
        private Status(String desc) {
            this.desc = desc;
        }
    }

Since I couldn't make it work with 'OK', I highly suspect it's either a big mistake by my part or a bug, so I'm reporting it.


[1] http://stackoverflow.com/questions/6432933/hibernate-jpa-bug-not-recognizing-some-strings-in-a-enum/

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://opensource.atlassian.com/projects/hibernate/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        


More information about the hibernate-issues mailing list