设置默认的原始布尔值



我有一个基本的处理数据库的SpringBoot/Hibernate应用程序。我有一个列在一个Oracle表,表示一个布尔值。在数据库级别,它是这样表示的P_IND CHAR(1 BYTE) DEFAULT 'N' NOT NULL

在实体层面,我是这样映射的-

@Column(name = "P_IND")
@Type(type = "yes_no")
private boolean ind;

创建新记录时,默认值需要是'N',这就像预期的那样工作。现在,默认值需要为true(数据库中的'Y')。我可以这样做

a)private boolean ind = true;

或添加此注释

b)@ColumnDefault("true")

  1. 是不是a)更有利的,因为你可以创建/持久化实体与真/假值?
  2. 将b)允许您创建两者(ind是一个原始布尔值),如果是这样,是一个更好的注释方式吗?

它们做的是两件不同的事情。

@ColumnDefault是一个Hibernate ORM特定的注释(不是JPA)。它标识Hibernate在启动时生成模式时将在列定义中使用的默认值。这意味着只有在Hibernate创建列时才会使用。

private boolean ind = true;

使用原始类型意味着在持久化或更新期间,值将始终是truefalse(我认为在Java中默认是false)。因此,@ColumnDefault并不重要(除非您运行自定义插入查询而没有Hibernate ORM)。

如果你改变Boolean的类型,然后ind可以为空。这意味着插入时使用的默认值将是创建列时使用的值。如果您使用Hibernate ORM创建了数据库,则它是@ColumnDefault中的值。

无论如何,你似乎两者都需要。

相关内容

  • 没有找到相关文章

最新更新