使用 spring-data-neo4j 时如何修复 java.lang.IllegalStateException
How to fix java.lang.IllegalStateException when using spring-data-neo4j
我有一个简单的测试项目,其中使用 spring 引导版本检查 spring-data-neo4j:2.1.0.RELEASE (https://github.com/tomkasp/neo4j-playground/blob/master/src/main/java/com/athleticspot/neo4jplayground/domain/AthleteRepository.java)
spring-data-neo4j (version: 5.1.4.RELEASE) 依赖被 spring-boot-starter-data-neo4j 注入。
我的目标是创建一个存储库方法,该方法通过包含和忽略大小写功能获取数据。为此,我在存储库中创建了以下方法:
public interface AthleteRepository extends CrudRepository<Athlete, Long> {
List<Athlete> findByNameContainingIgnoreCase(String name);
}
当我 运行 以上函数时,我得到:
java.lang.IllegalStateException: Unable to ignore case of java.lang.String types, the property 'name' must reference a String
at org.springframework.util.Assert.state(Assert.java:73) ~[spring-core-5.1.2.RELEASE.jar:5.1.2.RELEASE]
at org.springframework.data.neo4j.repository.query.filter.PropertyComparisonBuilder.applyCaseInsensitivityIfShouldIgnoreCase(PropertyComparisonBuilder.java:101) ~[spring-data-neo4j-5.1.2.RELEASE.jar:5.1.2.RELEASE]
spring-data-neo4j 不同时支持 Containing 和 IgnoreCase 吗?我错过了什么吗?
目前似乎不可能,因为引用的 org.springframework.data.neo4j.repository.query.filter.PropertyComparisonBuilder
似乎只允许忽略 "SIMPLE_PROERTY"(是或等于)的大小写。请参阅相同 class 中的方法 canIgnoreCase
:
private boolean canIgnoreCase(Part part) {
return part.getType() == SIMPLE_PROPERTY && String.class.equals(part.getProperty().getLeafType());
}
spring 5.2 (Moore) 即将修复:https://jira.spring.io/browse/DATAGRAPH-1190
我有一个简单的测试项目,其中使用 spring 引导版本检查 spring-data-neo4j:2.1.0.RELEASE (https://github.com/tomkasp/neo4j-playground/blob/master/src/main/java/com/athleticspot/neo4jplayground/domain/AthleteRepository.java)
spring-data-neo4j (version: 5.1.4.RELEASE) 依赖被 spring-boot-starter-data-neo4j 注入。
我的目标是创建一个存储库方法,该方法通过包含和忽略大小写功能获取数据。为此,我在存储库中创建了以下方法:
public interface AthleteRepository extends CrudRepository<Athlete, Long> {
List<Athlete> findByNameContainingIgnoreCase(String name);
}
当我 运行 以上函数时,我得到:
java.lang.IllegalStateException: Unable to ignore case of java.lang.String types, the property 'name' must reference a String
at org.springframework.util.Assert.state(Assert.java:73) ~[spring-core-5.1.2.RELEASE.jar:5.1.2.RELEASE]
at org.springframework.data.neo4j.repository.query.filter.PropertyComparisonBuilder.applyCaseInsensitivityIfShouldIgnoreCase(PropertyComparisonBuilder.java:101) ~[spring-data-neo4j-5.1.2.RELEASE.jar:5.1.2.RELEASE]
spring-data-neo4j 不同时支持 Containing 和 IgnoreCase 吗?我错过了什么吗?
目前似乎不可能,因为引用的 org.springframework.data.neo4j.repository.query.filter.PropertyComparisonBuilder
似乎只允许忽略 "SIMPLE_PROERTY"(是或等于)的大小写。请参阅相同 class 中的方法 canIgnoreCase
:
private boolean canIgnoreCase(Part part) {
return part.getType() == SIMPLE_PROPERTY && String.class.equals(part.getProperty().getLeafType());
}
spring 5.2 (Moore) 即将修复:https://jira.spring.io/browse/DATAGRAPH-1190