Neo4 Java обновление всех свойств на узле, включая уникальное свойство ограничения - PullRequest
0 голосов
/ 10 июля 2020

В настоящее время я использую версию сообщества neo4j 3.5, встроенную базу данных, и у меня есть уникальное ограничение на свойство Identifier.

Я открываю транзакцию, выполняя

Map<String, Object> properties = // Map of new properties
GraphDatabaseService service = ...
try (Transaction tx = service.beginTx()) {
    // Consider the node is existing
    Node node = service.findNode(label, "Identifier", identifier);
    // Replace the properties on the node including identifier
    neoEntity.getPropertyKeys().forEach(neoEntity::removeProperty);
    graphEntity.getProperties().forEach(neoEntity::setProperty);
    neoEntity.setProperty(IDENTIFIER, graphEntity.getIdentifier());

    tx.success();
}

If Я делаю только это, это ведет себя так, как ожидалось, как обновление свойств. Однако, если я снова запрошу, используя тот же идентификатор в той же транзакции service.findNodes(label, "Identifier", identifier).stream().toArray(); Я получаю две сущности с одинаковым nodeId и одинаковыми свойствами (включая идентификатор). Мне нужно запросить узел, поскольку некоторые отношения создаются / обновляются, зная только идентификаторы обоих концов, и это происходит в той же транзакции l oop. Я бы не хотел хранить в переменной все измененные узлы на случай, если они будут использоваться в отношениях.

Я думаю, он объединяется в конце транзакции, поскольку я снова запрашиваю его в другой транзакции он возвращает только один.

Итак, мой вопрос: что я делаю не так при обновлении своих свойств?

Спасибо за ваши ответы :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...