:
Caused by: org.hibernate.AnnotationException: Attribute [model.Patient.bloodType] was annotated as enumerated, but its java type is not an enum [java.lang.Object]
クラスの患者:
@Entity
@Table(name = "Donors")
@Access(AccessType.PROPERTY)
class Patient
{
(...)
@Column(name="Blood_Type")
private ObjectProperty<BloodType> bloodType = new SimpleObjectProperty<BloodType>();
@Enumerated(EnumType.STRING)
public Object getBloodTye() {
return bloodType.get().toString();
}
public void setBloodTye(Object bloodType) {
this.bloodType.set((BloodType) bloodType);
}
}
そして、列挙型の
は私のコードを実行した後、私は例外をrecive列挙型。しかし、あなたのゲッタ/セッターは、そのプロパティがタイプObject
であるかのように書かれています。これをBloodType
に変更します。
とにかくそれは非常に悪い習慣であることに注意してください。これはちょうどClassCastException
につながる可能性があります。あなたはそれらを文書化しておらず、タイプとしてBloodType
を使用することでそれらを防ぐのは簡単です。 Hibernateは、列挙型からString
への変換を処理します。
@Entity
@Table(name = "Donors")
@Access(AccessType.PROPERTY)
class Patient
{
(...)
private ObjectProperty<BloodType> bloodType = new SimpleObjectProperty<>();
@Enumerated(EnumType.STRING)
@Column(name="Blood_Type")
public BloodType getBloodType() {
return bloodType.get();
}
public void setBloodType(BloodType bloodType) {
this.bloodType.set(bloodType);
}
}