首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >持久化实体后数据库表中的默认列值为null

问持久化实体后数据库表中的默认列值为null
EN

Stack Overflow用户
提问于 2011-11-22 22:53:57
回答 3查看 3.6K关注 0票数 1

​

​

从上图中,您可以看到MySQL数据库中的一列(表问题),其中我有一列的默认值为'Approved‘。但是,如果我创建了一个新的value实例,在对象上设置值,而不是在status列中设置status属性,而不是使用默认值。我是否需要在Java代码中设置默认值?(我坚持它的地方)

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-11-22 22:59:02

是。当实体的持久化字段为空时,JPA不会忽略它。它在生成的insert/update语句中将该列设置为null。因此,您必须将其设置为Java中的默认值。实体的构造函数可能是设置这样的默认值的适当位置。

票数 3
EN

Stack Overflow用户

发布于 2011-11-22 23:03:24

是的,你需要在你的实体类中提供默认映射,因为hibernate不支持默认值(总是),你可以通过两种方式来实现:

  1. 使用default选项并在@Column注释中提供该值。这是数据库相关的,需要检查这是否适用于其他发帖所说的MySQL
  2. ,在构造函数

中使用"Approved“值初始化您的变量

也非常相似的帖子here

票数 1
EN

Stack Overflow用户

发布于 2011-11-23 21:56:08

在Java中使用缺省值是最好的。

您也可以在@Column中将insertable设置为false,但是除非进行刷新,否则对象和数据库将不同步。

EclipseLink还支持从数据库返回字段值,但仅限于Oracle (除非使用存储过程)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8228795

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档