У меня есть класс Person
, сопоставленный с аннотациями с перечислением Sex
, относящимся к полу, если это мужчина или женщина. Давайте посмотрим:
@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
}
Когда я тестирую получение всех строк из базы данных MySQL, это работает, и сопоставление правильное.
База данных уже предопределена, вот определение столбца:
`SEX` enum('M','F') NOT NULL
Однако ошибка возникает, когда я настраиваю Hibernate с помощью hibernate.hbm2ddl.auto=validate
:
found [enum (Types#CHAR)], but expecting [varchar(255) (Types#VARCHAR)]
Ошибка немного отличается (expecting [integer (Types#INTEGER)]
), когда я использую EnumType.ORDINAL
или вообще не использую @Enumerated
.
Что я делаю неправильно?