2017-05-04 58 views
0

我有一個映射的實體與PostgreSQL數據庫中的JPA。hbm2ddl.auto更新和新的布爾屬性添加到一個現有的表與記錄

該表存在,我有一些記錄,現在我想添加一個簡單的新布爾(不是B奧爾)屬性。

在日誌中,我可以正確地看到使用非空的alter table,因爲我選擇了布爾值,而不是布爾值,它是正確的,但.... 沒有看到任何錯誤,數據庫沒有被更新。

試圖直接在我的SQL客戶端執行alter table最後我可以看到問題,即我剛剛添加的列包含空值... 很明顯,已存在的記錄將盡快有空值該列將被創建。

這就是說,如果我想在已經有至少一條記錄的表中創建非空屬性,我該怎麼辦? 謝謝

回答

0

從我的理解你的問題,你通過添加一個新的boolean列更新您的表時,您的問題與您較早添加的錶行。

您以前的表格行獲取新增列的null值。

您可以使用作爲@Column註釋中的屬性提供的columnDefinition來設置JPA實體屬性的默認值。

如果你想在你的JPA實體添加一個新的布爾屬性,你可以試試這個

@Column(name = "is_active", columnDefinition="tinyint(1) default 1") 
private boolean isActive; 

而且,由於使用的是hbm2ddl,這不僅會創建一個新的boolean列,你還要給它默認爲true。它也會爲該表中所有先前添加的行設置爲true。

希望它有幫助!

+0

感謝但你的解決方案不是DBMS獨立的,例如在PostgreSQL中tinyint不是一個有效的類型,我應該寫... bool默認爲true; – Gamby

相關問題