Hibernate 默认值

5
有没有一种方法可以在Hibernate中为每个字段定义默认值,并且出于数据库大小的考虑,写入null而不是这些默认值?
例如,假设String的默认值是“”。我想让Hibernate:
  1. 对于每个在数据库中为NULL的字段,返回“”。
  2. 当我尝试写入“”时,在数据库中写入NULL
当然,我可以编写成千上万个Getter和Setter,但是否可以自动完成?

可能是如何在Hibernate中设置默认值的重复问题。 - Jason C
2个回答

6
如果您想要一个真正的数据库默认值,请使用columnDefinition - @Column(name =“myColumn”,nullable = false,columnDefinition =“int default 100”)。请注意,columnDefinition中的字符串依赖于数据库。另外,如果您选择此选项,则必须使用dynamic-insert,以便Hibernate在插入时不包括具有null值的列。否则,谈论默认值是无关紧要的。
但是,如果您不想要数据库默认值,而只是在Java代码中设置默认值,请像这样初始化变量 - private Integer myColumn = 100;
columnDefinition = “int default 100"

尝试类似于以下内容:
columnDefinition = “TEXT default `default_text`"

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

使用Hibernate注释的文本字段

在MYSQL中使用Hibernate注释设置默认值


当您声明类的属性时,可以在那里初始化相应属性的默认值。这应该可以工作。 - Mukesh S
1
谢谢您的回答,但它并没有回答我的问题 - 我不想将默认值存储在数据库中,我想在涉及默认值时存储NULL。正如我所写的:“每当我尝试写入“”时,我希望Hibernate将NULL写入数据库。” - Vojtěch
1
你尝试过使用验证器吗?看看这个链接:http://blog.inflinx.com/2012/04/24/custom-jsr-303-constraints/ - But I'm Not A Wrapper Class

0

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接