当前位置: 首页 > 知识库问答 >
问题:

Spring JPA 2.4无法在PostgreSQL数据库中正确映射布尔值

窦弘义
2023-03-14

我一直使用Java 11的Spring Boot 2.3.3.RELEASE和Spring Boot Starter Data JPA来集成我的PostgreSQL数据库,版本12.5。我升级到了Spring 2 . 4 . 0(Hibernate Core 5 . 4 . 25 . final),现在每当我试图从数据库中获取一个具有布尔字段的实体时,它都会抛出以下异常:

org.hibernate.PropertyAccessException: Null value was assigned to a property [class com.x.database.User.taxExempt] of primitive type setter of com.x.database.User.taxExempt

这是免税的代码:

    @NotNull
    @Column(name = "tax_exempt", nullable = false)
    private boolean taxExempt;

在2.3.3.0版本中一切正常(Hibernate Core 5.4.20.Final)

我将该字段转换为boxed Boolean,这防止了异常,但是User.taxExempt在调试器中仍然显示为null。数据库中的列不为空,并且该表中的所有记录都有该列的值。

这是Postgres驱动程序的问题吗?根据他们的网站,最新版本的驱动程序兼容Java 9,但在我更改Spring版本之前,一切都可以与Java 11兼容。

共有1个答案

宇文修文
2023-03-14

您需要使用非原始包装器类型;例如,布尔值而不是布尔值整数而不是 int

不能将< code>null值赋给< code>primitive类型,如< code>int 、< code>long 、< code>boolean等。如果对应于对象中字段的数据库列可以为空,那么您的字段应该是一个包装类,比如< code>Integer、< code>Long、< code>Boolean等。

因此,您的字段应该如下所示。

@NotNull
@Column(name = "tax_exempt", nullable = false)
private Boolean taxExempt;
 类似资料:
  • 问题内容: 我正在尝试设置控制器,但是很遗憾无法查看输出…一切都正确呈现。当我转到404页面时。从Netbeans运行我的应用程序转到 app-config.xml web.xml 我如何调试它,看看有什么用,什么没用? 更新资料 Netbeans中的GlassFish服务器日志显示 问题答案: 您的名字映射到中吗?从您先前的问题中,我看到: 网址不匹配格式。尝试一种可能的解决方法。

  • 我公开了一个使用另一个SOAP服务的服务。我得到了JAXB生成的服务模型。当我使用服务时,数据被设置到与此模型相关的对象中。我定义了自己的域模型,它与JAXB模型具有完全相同的类集,但没有xml注释等。我使用dozer来执行数据映射。当标记为注释(nillable=true)的某些布尔元素为null时,我的域模型中的目标对象布尔对象将设置为默认的true或false值。我希望它保留相同的空值。布尔

  • 我正在使用Struts、Spring和Hibernate与mysql&Eclipse Kepler的集成进行在线考试项目。在Registration.jsp页面中提交值时,我试图将这些值存储在同一个数据库中的两个不同的表(user_details,address)中。我可以将它们存储在数据库中,但我不能获取user_id,这是地址表的外键。user_id是user_details表中的主键,除了地

  • 我在Spring Boot和PostgreSql中有一个实体,我使用@Column注释映射到数据库。这是我的实体剪报代码: 当id运行和测试与邮递员,我得到一个错误: org.springframework.dao.InvalidDataAccessResourceUsageExc0019:无法提取ResultSet;SQL[n/a];嵌套异常是org.hibernate.exception.SQ

  • 我有麻烦映射一个嵌套dto字段正确与MapStruct。我有几个DTO: 具有相应的映射器 到目前为止,一切工作都很好,生成的代码自动连接其他需要的映射器来正确地构建DTO。例如生成的仪器映射器实现 现在,当我试图创建一个包含嵌套工具dto的映射器时遇到了麻烦。映射器应使用instrumentMapper正确创建所需的dto。DTO: 映射器: 生成的代码: 现在media mapper得到了很好

  • 我想使用这种格式的多维数组:值[n][],其中n是问题号。使用此新设置,您最终应该使用以下复选框字段: 请注意,选定的值编码在value属性中。name属性只包含值所属的问题。 因此,上述输入说明的是: 我想在下面的“问题”和“答案”数据库表中插入这些详细信息: 问题表: 答题表: 现在,我已经尝试编写下面的mysqli/php代码,将这些值插入数据库,但我收到错误,并在想要实现我想要实现的目标时