gpt4 book ai didi

java - Hibernate boolean 字段映射问题

转载 作者:行者123 更新时间:2023-12-01 12:45:54 25 4
gpt4 key购买 nike

实体中有一个 boolean 字段:

@Column(name = "FREEFLAG", columnDefinition = "NUMBER(0,1) default 0", nullable = false)    
public boolean getFreeflag() {
return freeflag;
}

数据库 - Oracle,字段 FREEFLAG - NUMBER(0,1)

我尝试使用 Hibernate 从数据库获取对象,但是如果数据库中的字段为空,我会得到一个异常:

Exception in thread "main" org.hibernate.PropertyAccessException: Null value was assigned to a property of primitive type

为什么默认值不起作用?我如何在服务器端解决这个问题?我必须在 db 中有 0 或 1 个值。

我得到了解决方案 - Default value not working in hibernate 。但我还是要修改数据库。我添加了DDL - alter table client修改freeflag default 0 not nullDML - 更新客户端设置 freeflag = 0,其中 freeflag 为 null;提交

最佳答案

在您的评论中,您说过您的数据库允许此列为空值。 JPA Provider 在架构生成过程中使用 columnDefinition 属性,因此我可以假设您在添加 columnDefinition 属性(也不是 nullable=false)后尚未生成架构)。 columnDefinition 中设置默认值的提示未应用于数据库,因此您没有将此列设置为默认值也就不足为奇了。

使其发挥作用的另一种方法是为此字段创建自定义转换器,它将按照您需要的方式保存值。有关转换器实现的更多信息可用 here .

关于java - Hibernate boolean 字段映射问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24711454/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com