fix: Assume Values.NULL in all cases where id values are literal null.

Closes #2710

# Conflicts:
#	src/main/java/org/springframework/data/neo4j/core/Neo4jTemplate.java
#	src/main/java/org/springframework/data/neo4j/core/ReactiveNeo4jTemplate.java
This commit is contained in:
Michael Simons
2023-04-11 12:16:22 +02:00
parent 33e9f33459
commit 30c905aac7
2 changed files with 21 additions and 9 deletions

View File

@@ -48,6 +48,7 @@ import org.neo4j.cypherdsl.core.Statement;
import org.neo4j.cypherdsl.core.renderer.Configuration;
import org.neo4j.cypherdsl.core.renderer.Renderer;
import org.neo4j.driver.Value;
import org.neo4j.driver.Values;
import org.neo4j.driver.exceptions.NoSuchRecordException;
import org.neo4j.driver.summary.ResultSummary;
import org.neo4j.driver.types.Entity;
@@ -335,15 +336,20 @@ public final class Neo4jTemplate implements
.getResults();
}
private Object convertIdValues(@Nullable Neo4jPersistentProperty idProperty, Object idValues) {
private Object convertIdValues(@Nullable Neo4jPersistentProperty idProperty, @Nullable Object idValues) {
if (idProperty != null && ((Neo4jPersistentEntity<?>) idProperty.getOwner()).isUsingInternalIds()) {
return idValues;
}
return neo4jMappingContext.getConversionService().writeValue(idValues,
ClassTypeInformation.from(idValues.getClass()),
idProperty == null ? null : idProperty.getOptionalConverter());
if (idValues != null) {
return neo4jMappingContext.getConversionService().writeValue(idValues, ClassTypeInformation.from(idValues.getClass()), idProperty == null ? null : idProperty.getOptionalConverter());
} else if (idProperty != null) {
return neo4jMappingContext.getConversionService().writeValue(idValues, idProperty.getTypeInformation(), idProperty.getOptionalConverter());
} else {
// Not much we can convert here
return Values.NULL;
}
}
@Override

View File

@@ -19,6 +19,7 @@ import static org.neo4j.cypherdsl.core.Cypher.anyNode;
import static org.neo4j.cypherdsl.core.Cypher.asterisk;
import static org.neo4j.cypherdsl.core.Cypher.parameter;
import org.neo4j.driver.Values;
import org.springframework.data.neo4j.core.mapping.IdDescription;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
@@ -320,15 +321,20 @@ public final class ReactiveNeo4jTemplate implements
return createExecutableQuery(domainType, null, queryFragmentsAndParameters);
}
private Object convertIdValues(@Nullable Neo4jPersistentProperty idProperty, @Nullable Object idValues) {
private Object convertIdValues(@Nullable Neo4jPersistentProperty idProperty, Object idValues) {
if (((Neo4jPersistentEntity<?>) idProperty.getOwner()).isUsingInternalIds()) {
if (idProperty != null && ((Neo4jPersistentEntity<?>) idProperty.getOwner()).isUsingInternalIds()) {
return idValues;
}
return neo4jMappingContext.getConversionService().writeValue(idValues,
ClassTypeInformation.from(idValues.getClass()), idProperty == null ? null : idProperty.getOptionalConverter());
if (idValues != null) {
return neo4jMappingContext.getConversionService().writeValue(idValues, ClassTypeInformation.from(idValues.getClass()), idProperty == null ? null : idProperty.getOptionalConverter());
} else if (idProperty != null) {
return neo4jMappingContext.getConversionService().writeValue(idValues, idProperty.getTypeInformation(), idProperty.getOptionalConverter());
} else {
// Not much we can convert here
return Values.NULL;
}
}
@Override