从hibernate到mysql,默认值映射问题

时间:2011-04-17 09:49:36

标签: mysql hibernate hibernate-mapping

hibernate xml映射文件不支持默认值。所以当我尝试在mysql中创建一个默认值的列时,我运行hibernate save()方法而不设置列值。无法生成默认值。

我做了一些搜索。根据这篇文章: https://forums.hibernate.org/viewtopic.php?t=171&highlight=default+value&sid=84a014fd93dd9b680afc606f616ca4f6 它说hibernate不支持默认值。我们可以使用触发器代替。

除触发外,我们可以做任何方式吗?我们如何通过触发器

来做到这一点

好的,我尝试做更多的搜索,我找到答案:

  

ibernate不支持默认值,您应该使用数据库触发器管理它,或者在域中指定默认值。

但是如果我在我的域中分配默认值,在constructer中说,我们有任何缺点吗?

THX!

1 个答案:

答案 0 :(得分:3)

我建议使用构造函数来设置对象的默认状态。 Hibernate是一个ORM。基本原则是保存对象。使用DBMS端的默认值可以通过将对象保存在无效状态中来破坏整个概念。 (通过使字段值可以跳过 setter 方法)。

另一方面,当你实例化一个对象时,它的字段已经被启动(为空值或零或空字符串等).Hibernate无法猜测你是想要保存实际的空值还是零或者你想要使用DB的默认值。

当你在谈论DBMS级别的默认值时,我假设你会想到原始值。初始化Java端的原始字段(在构造函数内部或通过声明)绝对没有缺点。