当前位置: 首页 > 面试题库 >

在Hibernate中设置属性的默认值不起作用

颛孙兴旺
2023-03-14
问题内容

我的实体中有一个布尔型属性。这是我的注释:

@Column(name = "IS_ACTIVE", nullable = false, columnDefinition="BIT DEFAULT 1", length = 1)
public Boolean getActive() {
    return isActive;
}

但是效果columnDefinition="BIT DEFAULT 1"并不理想。这是我作为生成表的结果得到的SQL代码:

IS_ACTIVE BIT(1) NOT NULL,

我究竟做错了什么?

因此,当我尝试将此类的实例保存到数据库时,出现异常:

`com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Column 'IS_ACTIVE' cannot be null`

如果我删除nullable = false财产:

@Column(name = "IS_ACTIVE", columnDefinition="BIT DEFAULT 1", length = 1)
public Boolean getActive() {
    return isActive;
}

因此在这种情况下,我可以保存创建的对象。但是仍然 没有设置默认值, 并且我在数据库中此字段的值中得到NULL。

有什么想法吗?如果重要,我会使用MySQL Server 5.1。我将非常感谢您的帮助。提前致谢!


问题答案:

尝试使用BOOLEAN数据类型,@Column像这样定义注释:

@Column(name = "IS_ACTIVE", columnDefinition = "boolean default true", nullable = false)
private Boolean active = true;


 类似资料:
  • 问题内容: 如何在hibernate字段中设置默认值? 问题答案: 如果要使用真实的数据库默认值,请使用: 注意,其中的字符串是数据库相关的。同样,如果选择此选项,则必须使用,因此不包括在插入时带有值的列。否则谈论默认是无关紧要的。 但是,如果您不希望数据库默认值,而只是Java代码中的默认值,只需像这样初始化变量-

  • 问题内容: 有没有一种方法可以设置javascript对象的默认属性,例如: IE可以忽略,Chrome Frame减轻了我的头痛。 问题答案: 自从几年前我问这个问题以来,事情进展顺利。 代理是ES6的一部分。以下示例可在Chrome,Firefox,Safari和Edge中运行:

  • 年龄限制默认值不是由选择的,但是它与请求参数配合得很好。 YML文件 下面是带有请求参数Request的旧代码 下面是ModelAttribute请求的新代码

  • 我尝试将ini文件解析为可以在ant脚本中使用的属性。我有以下几点: 我试图做的是解析所有的name=value对,并将它们放入属性中,如:section。名称=值; 不知何故,“echoMsg”目标中没有记住该部分。我想记住部门名称。 所以 应该成为: 这是我的ant脚本的输出: 如您所见,未设置最后一个“${prevSection}”。我希望它是“全球性的”。 我试着用它来代替财产,但没有区别

  • 我在互联网上搜索过,看到了关于在mysql中使用Hibernate注释在实体类中设置默认值的想法,我已经完成了将默认值设置为具有数据类型整数的列,如下所示。 而且工作得很好。 但是我没有看到任何varchar/string数据类型的示例,我尝试了columnDefinition中的不同类型,比如, 使用“长度”属性:- 等等。 但在这种情况下,表不是由hibernate创建的,这可能是由于语法错误

  • 我使用SpringBoot提供了许多不同的服务。我想为每个服务设置一些通用的配置,但允许服务拥有自己的属性,并在需要时覆盖它们。示例属性包括spring。显示_横幅、管理url等。 我该怎么做?如果我有以下资料: 使用默认属性的src/main/Resources/application.yml服务公共 服务1与src/main/资源/application.yml与自己的属性 我希望它们与优先的