從SDN 3
到SDN 4
和從Neo4j 2.3
到Neo4j 3.0.1
我遇到了OEM和定製Cypher查詢之間不一致的問題。Neo4j OEM和定製Cypher查詢之間的SDN不一致
我有以下的Cypher查詢:
@Query("MATCH()-[r]-(cg:CriterionGroup) WHERE id(cg) = {criterionGroupId} DELETE cg, r")
void deleteCriterionGroup(@Param("criterionGroupId") Long criterionGroupId);
眼下,隨着SDN 4此查詢不無後deleteCriterionGroup
方法調用以下解決方法工作:
session.clear();
可否請你展示正確的代碼現在在SDN 4中如何刪除CriterionGroup
以保持相關節點的引用一致。
這是我的數據的模式:
正如你所看到的 - CriterionGroup
連接到Decision
,Criterion
和User
節點。
更新
至於建議,我已經更新了我的方法:
@Override
public void deleteCriterionGroup(Long criterionGroupId) {
CriterionGroup criterionGroup = criterionGroupRepository.findOne(criterionGroupId);
criterionGroup.setAuthor(null);
criterionGroup.setOwner(null);
criterionGroup.setCriteria(null);
criterionGroup = criterionGroupRepository.save(criterionGroup);
criterionGroupRepository.delete(criterionGroup);
}
這是非常正常的,如果你不告訴他,OGM不知道你在數據庫中做了哪些修改。還要記住,sdn3是圍繞嵌入式gdb構建的,而sdn4是圍繞服務器數據庫構建的,並且具有真實的數據映射概念 –
這是我的問題 - 使用OGM刪除此節點的正確方法是什麼?我不想使用解決方法。 – brunoid
加載criteriaGroup和他的關係,刪除與POJO的關係session.save(); –