[英]Setting default primitive boolean value
我有一個處理數據庫的基本 SpringBoot/Hibernate 應用程序。 我在 Oracle 表中有一個表示布爾值的列。 在數據庫級別,它以這種方式表示 - P_IND CHAR(1 BYTE) DEFAULT 'N' NOT NULL
在實體級別,我以這種方式映射它 -
@Column(name = "P_IND")
@Type(type = "yes_no")
private boolean ind;
創建新記錄時,默認值需要為“N”,並且按預期工作。 現在默認值需要為true
(數據庫中的“Y”)。 我可以這樣做
a) private boolean ind = true;
或添加此注釋
b) @ColumnDefault("true")
ind
是原始布爾值),如果是這樣,注釋是更好的方法嗎?他們做兩種不同的事情。
@ColumnDefault
是 Hibernate ORM 特定的注釋(不是 JPA)。 它標識 Hibernate 在啟動時生成模式時將在列定義中使用的默認值。 這意味着僅在 Hibernate 創建列時使用。
private boolean ind = true;
使用原始類型意味着在持久或更新期間該值將始終為true
或false
(我認為在 Java 中默認為false
)。 所以@ColumnDefault
並不重要(除非您在沒有 Hibernate ORM 的情況下運行自定義插入查詢)。
如果將類型更改為Boolean
,則ind
可以為空。 這意味着插入時使用的默認值將是創建列時使用的默認值。 如果您使用 Hibernate ORM 創建了數據庫,則它是@ColumnDefault
中的值。
無論如何,你似乎需要兩者。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.