我正在使用hibernate YesNoConverter在数据库中将布尔值存储为'Y'/'N'。目前我正在迁移到Sping Boot 3.0(使用spring-data-jpa:3.0.0),自定义JpaRepository-query“findByActiveFalse”崩溃。
List<ExampleEntity> findByActiveFalse();
错误:
org.springframework.dao.DataIntegrityViolationException: JDBC exception executing SQL [select e1_0.id,e1_0.active from example_entity e1_0 where e1_0.active=0]; SQL [n/a]
Hibernate YesNoConverter不会被触发,所以有一个零而不是'N'。(在升级到Sping Boot 3.0之前,我有一个自己的转换器实现,它有同样的问题)
使用“findByActive(false)”,查询可以正常工作。
以下是我的消息来源:
JpaRepository:https://github.com/GuybrushDevwood/boolean-converter-demo/blob/main/src/main/java/com/example/booleanconverterdemo/example/ExampleEntityRepo.java
实体:https://github.com/GuybrushDevwood/boolean-converter-demo/blob/main/src/main/java/com/example/booleanconverterdemo/example/ExampleEntity.java
测试用例:https://github.com/GuybrushDevwood/boolean-converter-demo/blob/main/src/test/java/com/example/booleanconverterdemo/example/ExampleEntityRepoTest.java
我必须配置任何东西才能像以前一样工作吗?
1条答案
按热度按时间c86crjj01#
既然你不想重构你的代码,这是一个很好的临时解决方案。
备选方案:
使用标准构建器: