Как исправить java.lang.IllegalStateException при использовании spring-data-neo4j - PullRequest
0 голосов
/ 16 января 2019

У меня есть простой тестовый проект, в котором проверяется 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 (версия: 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 не поддерживает Containment и IgnoreCase вместе? Я что-то упустил?

1 Ответ

0 голосов
/ 13 февраля 2019

В настоящее время это кажется невозможным, поскольку ссылка org.springframework.data.neo4j.repository.query.filter.PropertyComparisonBuilder, по-видимому, позволяет игнорировать регистр только для "SIMPLE_PROERTY" (равно или равно). См. Метод canIgnoreCase в том же классе:

private boolean canIgnoreCase(Part part) {
    return part.getType() == SIMPLE_PROPERTY && String.class.equals(part.getProperty().getLeafType());
}

Исправление идет с пружиной 5.2 (Мур): https://jira.spring.io/browse/DATAGRAPH-1190

...