Возможно ли установить свойство на узле и УДАЛИТЬ его в одном запросе cypher, не вызывая фактическую запись диска в Neo4j.Добавить временное свойство на узле Cypher
Например, я попытался дублировать n-й узел в этом запросе, используя n в качестве errand, но SET на errand приводит к SET на n и равно REMOVE, таким образом свойство теряется в возвращаемом значении.
Это своего рода попытка создать переходное свойство на узле.
String q = "MATCH (owner)-[:POSTED]->n WITH owner, n, n as errand,
CASE WHEN owner-[:RECOMMENDED]->n THEN 'BROADCASTED'
WHEN owner-[:POSTED]->n THEN 'POSTED'
WHEN owner-[:GOT_NOMINATED]->n THEN 'NOMINATED'
ELSE 'CONNECTED'
END AS relationship
SET errand.meta = relationship
REMOVE n.meta
RETURN errand LIMIT 1";
Однако, когда я когда-либо проверить мой объект домена, чтобы увидеть, если свойство было установлено Neo4j, она возвращает нуль.
public class Errand {
private String meta;
Boolean isMetaSet() {
return meta != null;
}
}
Использование SDN Neo4j Я получаю свой объект запроса как.
Errand single = template.query(q, null).to(Errand.class).singleOrNull();
System.out.println (single.isMetaSet());
возвращает false.
Является ли ответ в Neo4J create temp variable within Cypher применимым для узлов?
В настоящее время я использую Neo4j во встроенном режиме с Neo4j, а мои запросы выполняются с использованием класса Neo4jTemplate.
Смотрите ответ на подобный вопрос, я спросил по этому вопросу на Set a transient property on a node neo4j
Я хотел бы вернуть единый узел, десериализуемый в объект модели –
Отличный ответ при попытке вернуть свойство. –
Это вызывает исключение нулевого указателя, поскольку оно удаляется до его возврата. Что-то не так с моим запросом cypher? –