簡體   English   中英

Oracle 19c 默認值與 Liquibase

[英]Oracle 19c Default Values with Liquibase

我有一個關於為什么我的默認值沒有被使用的快速問題。 使用 oracle 19c、liquibase 和 spring-boot

<column name="ACTIVE" type="BOOLEAN" defaultValueBoolean="false">
  <constraints nullable="false"/>
</column>

將其成功添加到數據庫中,甚至顯示在 IntelliJ 中

ACTIVE NUMBER(1) = 0

每當我想添加一個新條目並且不設置我得到的活動屬性時

ORA-01400: cannot insert NULL into

添加:

MyEntity me = new MyEntity();
me.setSomething("Hi");
meRepository.save(me); // Error because I didn't use me.setActive(false);

我覺得我錯過了一些明顯的東西......

(同樣適用於其他類型,例如使用 type="TIMESTAMP" 和 defaultValueComputed="CURRENT_TIMESTAMP" 的 LocalDatetime)

我想我知道發生了什么事。 對於每個想知道...

該項目使用 Hibernate(我沒有考慮過),似乎 Hibernate 在未手動設置時將所有值設置為“null”。 而且我沒有找到在 Liquibase 中添加“default on null”的解決方案。

那就是我尋求使用 Hibernate Hook @PrePersist 的解決方案

class MyEntity {
  private Boolean attribute;

  @PrePersist
  public void onCreate() {
    if(attribute == null) attribute = DEFAULT_VALUE;
  }
}

暫無
暫無

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

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