簡體   English   中英

設置默認原始布爾值

[英]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")

  1. a) 不是更有利,因為您可以創建/保留具有真/假值的實體嗎?
  2. b)是否允許您創建兩者( ind是原始布爾值),如果是這樣,注釋是更好的方法嗎?

他們做兩種不同的事情。

@ColumnDefault是 Hibernate ORM 特定的注釋(不是 JPA)。 它標識 Hibernate 在啟動時生成模式時將在列定義中使用的默認值。 這意味着僅在 Hibernate 創建列時使用。

private boolean ind = true;

使用原始類型意味着在持久或更新期間該值將始終為truefalse (我認為在 Java 中默認為false )。 所以@ColumnDefault並不重要(除非您在沒有 Hibernate ORM 的情況下運行自定義插入查詢)。

如果將類型更改為Boolean ,則ind可以為空。 這意味着插入時使用的默認值將是創建列時使用的默認值。 如果您使用 Hibernate ORM 創建了數據庫,則它是@ColumnDefault中的值。

無論如何,你似乎需要兩者。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM