【问题标题】:from hibernate to mysql, default value mapping issue从休眠到mysql,默认值映射问题
【发布时间】:2011-08-07 06:15:29
【问题描述】:

hibernate xml 映射文件不支持默认值。因此,当我尝试在 mysql 中创建具有默认值的列时,我运行休眠 save() 方法而不设置列值。无法生成默认值。

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

除了触发器,我们还有什么方法可以做到这一点?以及我们如何通过触发器来做到这一点

好的,我尝试进行更多搜索,我找到了答案:

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

但是如果我在我的域中分配默认值,在构造函数中说,我们有什么缺点吗?

谢谢!

【问题讨论】:

  • 如果改为注释,则可以为对象中的属性提供默认值。
  • 感谢您的回复,我可以将 xml 映射与注释混合使用吗?

标签: mysql hibernate hibernate-mapping


【解决方案1】:

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

另一方面,当您实例化一个对象时,它的字段已经初始化(为空值或零或空字符串等)。Hibernate 无法猜测您是否要保存实际的 null 或零,或者您想改用数据库的默认值。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-01-29
    • 2011-01-31
    • 1970-01-01
    • 1970-01-01
    • 2014-05-12
    • 2021-01-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多