0
我有類Person
映射與枚舉Sex
註釋性別如果是男性或女性。讓我們看看:Hibernate @Enumerated似乎被忽略
@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數據庫獲取所有行時,它的工作原理和映射是正確的。
數據庫已經預先定義,這裏是列的定義:
found [enum (Types#CHAR)], but expecting [varchar(255) (Types#VARCHAR)]
的錯誤是有點不同(expecting [integer (Types#INTEGER)]
):
`SEX` enum('M','F') NOT NULL
但是當我配置與hibernate.hbm2ddl.auto=validate
休眠出現錯誤當我使用EnumType.ORDINAL
或根本沒有@Enumerated
時發生。
我該怎麼做?
即使沒有'nullable = false'也能正常工作。謝謝。難道你不知道爲什麼只有'@ Enumerated'被放置時Hibernate纔會驗證嗎?爲什麼需要再次明確定義'ENUM('M','F')? –
它是冗長的,它在Java代碼中的兩個地方重複枚舉聲明。以這個價格,我不會在MySQL中使用一個枚舉類型,而是一個varchar,並且會在此列上添加一個約束來指定可接受的值。 – davidxxx
由於你映射值的形式db到enum.in db你可以更新這個值,你的代碼停止工作 – xyz