数据库
首页 > 数据库> > 从休眠到mysql,默认值映射问题

从休眠到mysql,默认值映射问题

作者:互联网

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

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

除了触发器,我们能做些什么?以及如何通过触发来做到这一点

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

ibernate does not support default values, you should either manager this using database triggers or assign default values in your domain.

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

谢谢!

解决方法:

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

另一方面,当实例化一个对象时,它的字段已经初始化(为空值,零或空字符串等).对于休眠来说,Hibernate不可能猜测是要保存实际的null还是零,还是要使用DB的默认值.

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

标签:hibernate,hibernate-mapping,mysql
来源: https://codeday.me/bug/20191208/2092003.html