Hibernate @Enumerated seems to be ignored

Viewed 4662

I have the class Person mapped with annotations with enum Sex reffering to the sex if is male or female. Let's see:

@Entity
@Table(name = "PERSON")
public class Person {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;

    @Enumerated(EnumType.STRING)
    @Column(name = "SEX")
    private Sex sex;

    private enum Sex {
        M,
        F;
    } 

    // Getters, setters & constructors
}

When I test getting all the rows from the MySQL database, it works and the mapping is correct.

The database is already predefined, here is the column's definition:

`SEX` enum('M','F') NOT NULL

However the error occurs when I configure Hibernate with hibernate.hbm2ddl.auto=validate:

found [enum (Types#CHAR)], but expecting [varchar(255) (Types#VARCHAR)]

The error is a bit different (expecting [integer (Types#INTEGER)]) happend when I use EnumType.ORDINAL or no @Enumerated at all.

What do I do wrong?

1 Answers
Related