2011-04-17 72 views
3

hibernate xml映射文件不支持默認值。所以當我嘗試在mysql中創建一個具有默認值的列時,然後運行休眠save()方法而不設置列值。無法生成默認值。從休眠到mysql,默認值映射問題

我已經做了一些搜索。根據這個帖子: https://forums.hibernate.org/viewtopic.php?t=171&highlight=default+value&sid=84a014fd93dd9b680afc606f616ca4f6 它表示hibernate不支持默認值。我們可以使用觸發器。

任何方式,除了觸發器,我們可以做到這一點?以及我們如何能做到這一點通過觸發

OK我嘗試做多搜索我找到了答案:

ibernate不支持默認值,就應該把經理這個使用數據庫觸發器或指定默認值你的域名。

但是,如果我在我的域中分配默認值,在constructer中說,我們有什麼缺點嗎?

thx!

+0

如果改爲使用註釋,則可以將默認值提供給對象中的屬性。 – 2011-04-17 09:54:13

+0

感謝您的回覆,我可以將xml映射與註釋混合使用嗎? – EeE 2011-04-17 09:56:29

回答

3

我建議使用構造函數來設置對象的默認狀態。 Hibernate是一個ORM。基本理念是您可以節省您的對象。在DBMS末端使用默認值可能會破壞整個概念,從而可以將對象保存爲無效狀態。 (通過使字段值可以跳過設定程序方法)。另一方面,當你實例化一個對象的時候,它的字段已經被初始化了(對於null值或者零或者空字符串等等).Hibernate將不可能猜測你想要保存實際的null還是零,或者您想要使用數據庫的默認值。

當你談論DBMS級別的默認值時,我假設你想到原始值。在Java端初始化原始字段(在構造函數中或聲明中)絕對沒有缺點。