【问题标题】:Hibernate default values休眠默认值
【发布时间】:2013-07-26 18:25:33
【问题描述】:

有没有办法用 hibernate 为每个字段定义默认值,并且为了数据库大小写 null 而不是这些默认值?

对于实例。假设 String 的默认值为“”。我希望 Hibernate:

  1. 为每个在数据库中为 NULL 的字段返回 ""。
  2. 当我尝试写入“”时,将 NULL 写入数据库

当然,我可以编写成千上万个 Getter 和 Setter,但是可以自动完成吗?

【问题讨论】:

标签: java hibernate jpa


【解决方案1】:

如果你想要一个真正的数据库默认值,使用 columnDefinition - @Column(name = "myColumn", nullable = false, columnDefinition = "int 默认 100")。注意 columnDefinition 中的字符串是数据库 依赖。此外,如果您选择此选项,则必须使用 动态插入,因此 Hibernate 不包含具有空值的列 在插入。否则谈论默认是无关紧要的。

但是如果你不想要数据库默认值,而只是一个默认值 Java 代码中的值,只需像这样初始化变量 - 私有整数 myColumn = 100;

来源:

How to set default value in Hibernate

当然,不要使用:

columnDefinition = “int default 100"

尝试类似:

columnDefinition = “TEXT default `default_text`"

我不确定这在语法上是否正确,但请查看以下内容:

Text Field using Hibernate Annotation

Set default values using hibernate annotations in MYSQL

【讨论】:

  • 当你声明你的类的属性时,你可以在那里初始化各个属性的默认值。那应该可以。
  • 感谢您的回答,但它没有回答我的问题 - 我不想将默认值存储在数据库中,我想存储 NULL,只要涉及到默认值。正如我所写:I would like Hibernate to write NULL to database whenever I try to write "".
  • 您是否尝试过使用验证器?看看这个:blog.inflinx.com/2012/04/24/custom-jsr-303-constraints
【解决方案2】:

您可以使用字段获取器来实现这样的事情,它很简单并且可以达到目的。

【讨论】:

    猜你喜欢
    • 2017-02-13
    • 1970-01-01
    • 2012-05-24
    • 2018-07-31
    • 2010-10-22
    • 2011-03-25
    • 1970-01-01
    • 2017-06-13
    相关资源
    最近更新 更多