java如何使用MERGE保存内部对象
现在我使用的是来自graphrespository的save方法,我对用户id也有限制,它是唯一的。用户拥有用户-朋友的列表。 我的流程:
- 从数据库读取,如果用户为空,则将其与朋友一起保存,我正在使用graphrespository中的save方法
但若用户在场,我只需要更新他和他的朋友。 我在DAO方法中使用自定义查询
@Query("MERGE (u:User {id:{user}.id}) " + "ON CREATE SET u.id = {user}.id, u.firstName={user}.firstName, u.lastName={user}.lastName, u.imgUrl = {user}.imgUrl " + "ON MATCH SET u.id += {user}.id, u.firstName+={user}.firstName, u.lastName+={user}.lastName, u.imgUrl += {user}.imgUrl") void mergeUser(@Param("user") User user);
# 1 楼答案
您可能希望使用类似以下内容的密码查询:
没有必要使用
ON CREATE
或ON MATCH
,因为您总是想以任何一种方式做同样的事情。此外,不需要显式地分配id
属性,因为MERGE
将保证节点将具有所需的id
值我假设
friends
集合由与user
映射具有相同键的映射组成