java - 无法将 boolean 值设置为 null

我有一个带有以下变量的类 Shop

@Column(columnDefinition = "bit")
private boolean atShop;

使用此值,我正在使用 HSQL 从应用程序中检索此信息

from Person person
left join fetch person.shop

当我尝试调用此 HSQL 语句时,我收到以下错误

org.springframework.orm.hibernate3.HibernateSystemException: could not set a field value by reflection setter of com.test.dataobject.Shop.atShop; nested exception is org.hibernate.PropertyAccessException: could not set a field value by reflection setter of com.test.dataobject.Shop.atShop

之所以抛出这个,是因为它试图在 HSQL 中将 boolean 值设置为 null。我可以通过将 private boolean atShop; 更改为 private Boolean atShop; 来解决这个问题,但我想在保存时将其保留为 boolean它在我的数据库中有点像

有没有办法在不将 boolean 更改为 Boolean 的情况下解决这个问题?

编辑:

我知道 boolean 只能是 true/false 并且 Boolean 可以设置为 null,但是有没有办法让 hibernate/spring 将此值设置为 false(我认为它应该自动执行)而不是尝试将其设置为 null 并抛出此异常?

我也尝试添加注释以自动将值设置为 false,但这也不起作用

@Column(nullable = false, columnDefinition = "bit default 0")
private boolean atShop;

最佳答案

- boolean 是一种原始类型,只能有 true 或 false 的值。

-BooleanWrapper Object 并且可以被赋予 null 值。

-Java 1.5 开始提供 AutoBoxing,因此您可以使用简单赋值运算符将 boolean 值转换为 boolean 值并返回 boolean 值 (=),因此您可以在需要 boolean 值而不是 boolean 值的地方执行此操作。

https://stackoverflow.com/questions/13013227/

相关文章:

java - 为什么 Spring 的 jdbcTemplate.batchUpdate() 这么慢

database - Spring Batch Framework - 自动创建批处理表

java - @ControllerAdvice 在处理异常方面比 @ExceptionHandle

java - 如何在spring mvc中使用带有freemarker的消息?

spring - 配置多个数据源后无法设置JPA命名策略(Spring 1.4.1/Hibernat

java - AspectJ 表达式在切入点错误中给出正式的未绑定(bind)

java - 使用 restAssured 测试 Spring Boot Rest 应用程序

java - 我无法使用断点进行调试

java - 为什么来自 Spring 的 BCryptPasswordEncoder 为相同的输入

java - 在 Spring Boot 中读取环境变量