ten kod:Uzyskiwanie błąd podczas kryteria wykonywanie zapytań na kolumnę enum w tabeli mysql hibernacji
Session session = sessionFactory.getCurrentSession();
Criteria criteria = session.createCriteria(Contact.class)
.add(Restrictions.like("gender", "male", MatchMode.ANYWHERE)));
List<Object[]> contactList = criteria.list();
Gdzie płci jest enum kolumny typu w Contact.java
@Entity
@Table(name = "contact_master")
public class Contact {
public enum Gender {
MALE,FEMALE
}
@Column(name = "gender")
@Enumerated(EnumType.STRING)
private Gender gender;
public Gender getGender() {
return gender;
}
public void setGender(Gender gender) {
this.gender = gender;
}
}
Kiedy uruchomić powyższy kod Otrzymuję wyjątek typu:
java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Enum
Myślę, że to sympatyczny hack, ale dlaczego hibernacja go nie obsługuje? – IntelliData
@IntelliData Byłoby trochę logicznie trudne, aby generyczne zachowanie w tym zakresie, jeśli chodzi o wyliczenia, ponieważ wyliczenia mogą być również przechowywane jako liczby przy użyciu 'EnumType.ORDINAL', więc zakładam, że autorzy właśnie wybrał spójny zachowanie dla wszystkich przypadków. –
Szkoda, że nie ma sposobu na przywrócenie funkcji hibernacji ....;) – IntelliData