在 postgresql 中使用休眠注释设置列的默认值

Posted

技术标签:

【中文标题】在 postgresql 中使用休眠注释设置列的默认值【英文标题】:Setting default value of a coloumn using hibernate annotations in postgresql 【发布时间】:2015-03-27 11:01:33 【问题描述】:

我想使用休眠注释在我的表中设置整数值的默认值。它可以工作,但是当我将默认值设置为 1 时,它总是在数据库中将其设置为零。我不知道我做错了什么。任何帮助将不胜感激

这就是我正在使用的

@Column(name = "interval",nullable = false, columnDefinition = “int default 1")
private int interval;

当我将值设置为 1 时,我检查了几乎所有我不知道的链接,然后为什么 0 会存储在数据库中

我知道我们可以这样做

@Column(name = "interval",nullable = false, columnDefinition = “int default 1")
private int interval = 1;

但我不想像上面那样设置值我想知道使用休眠设置默认值的任何方式

我已经看过这些链接 How to set default value in Hibernate Set default values using hibernate annotations in mysql

【问题讨论】:

【参考方案1】:

这是因为注释描述的是列,而不是数据。

Hibernate 不知道原始值是由用户更改还是默认保持不变。

在java中,原始整数默认初始化为0。如果你希望间隔默认为1,你需要这样的东西。

@Column(name = "interval",nullable = false, columnDefinition = “int default 1")
private int interval = 1;

或者另一种方式是将区间声明为整数:

@Column(name = "interval",nullable = false, columnDefinition = “int default 1")
private Integer interval;

【讨论】:

如果我要设置区间值那么需要在注释中给出columnDefinition 如果您在列中提供 null,则这是默认值。这里的诀窍是你不能为原始类型提供 null 是的,但我想知道有没有办法直接从注释中设置默认值..因为现在我正在做的和你展示的一样 您可以将区间声明为整数而不是整数,但这将带您进入全新的问题世界

以上是关于在 postgresql 中使用休眠注释设置列的默认值的主要内容,如果未能解决你的问题,请参考以下文章

使用休眠注释自动递增和用户定义的 id

如何使用注释在休眠中进行一对一映射

在休眠中使用@Column 注释时出现异常

使用返回表、休眠、postgresql 的函数

PostgreSQL 枚举和 Java 枚举之间的休眠映射

如何在休眠中指定双精度?