"Unable to ignore case of java.lang.String types", ignoreCase combined with Contains not working

So far Spring-Data-Neo4J works great but now i am hitting a problem:

In one of my "Neo4jRepository" for ProductResponsibleUnitRelation i declare a method:

List<ProductResponsibleUnitRelation> findByProductHierarchyIdContainingIgnoreCase(String partialProductHierarchyId);

Using this method yields this exception:

Caused by: java.lang.IllegalStateException: Unable to ignore case of java.lang.String types, the property 'productHierarchy' must reference a String
	at org.springframework.util.Assert.state(Assert.java:73)
	at org.springframework.data.neo4j.repository.query.filter.PropertyComparisonBuilder.applyCaseInsensitivityIfShouldIgnoreCase(PropertyComparisonBuilder.java:101)
	at org.springframework.data.neo4j.repository.query.filter.PropertyComparisonBuilder.build(PropertyComparisonBuilder.java:49)

Inspecting code of org.springframework.data.neo4j.repository.query.filter.PropertyComparisonBuilder reveals the problem. The method canIgnoreCase is called it looks like this:

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

It seems that the use of IgnoreCase (part.getType()) is only allowed for SIMPLE_PROPERTY but no for all others like CONTAINING.

The question is: How could i get a working findByContainingIgnoreCase method, preferable without using cypher (i am using spring data to abstract from these details).

My OGM calsses are these:

@RelationshipEntity(type = "responsible_for_product")
@Data
public class ProductResponsibleUnitRelation {

    @Id
    @GeneratedValue
    private Long id;


    @StartNode
    private LegalEntityNode legalEntity;

    @EndNode
    private ProductHierarchyNode productHierarchy;

    private LocalDate validFrom;

    private LocalDate validTo;

}
@NodeEntity
@Data
public class ProductHierarchyNode {
    @Id
    private String id;

}

I want to find all relations by case insensitive parts ("containing") of the id.

This will be part of the Spring Data Neo4j Moore release. The ticket is already solved Allow concatenation of ignoreCase modifier keyword [DATAGRAPH-1190] · Issue #1752 · spring-projects/spring-data-neo4j · GitHub

Thanks for quick reply,

is there a plan when 5.2 M2 (Moore) is available?
Is there any workaround available?

The Spring Data releases are managed by Pivotal and Moore M2 is currently scheduled for March 7th (https://spring-calendar.cfapps.io/).

You could go with a regex e.g. findByNameRegex(String regex). Have a look at the test/example spring-data-neo4j/RestaurantTests.java at e4450fdd9866ca7451f1cb8bee375cec532dcdf2 · spring-projects/spring-data-neo4j · GitHub

Just: Thank You :slight_smile: