gpt4 book ai didi

java - neo4j Cypher 查询 - 仅更新更改的字段

转载 作者:太空宇宙 更新时间:2023-11-04 13:39:15 25 4
gpt4 key购买 nike

这是一个非常简单的问题,我真的不明白如何做到这一点。我有一个用户可以更新信息的表单,该信息需要在数据库中更新。我不断收到异常无效数据访问资源使用情况,我知道我的查询出了问题。我正在使用 neo4j 数据库。任何人都可以帮助更新数据库中对象的字段。任何帮助将不胜感激。

我的表格:

<form:form action="dogEdited" method="get">
<label for="usr">Name:</label>
<input type="text" class="form-control" value="${updateDog.getName()}" name="name"><br>
<label for="usr">Weight (lb):</label>
<input type="text" class="form-control" value="${updateDog.getWeight()}" name="weight"><br>
<label for="usr">Heartbeat (b/min):</label>
<input type="text" class="form-control" value="${updateDog.getHeartbeat()}" name="heartbeat"><br>
<input type="hidden" name="id" value="${updateDog.getId()}"/>
<div style="text-align: center; display: block;"><input type="submit" class="btn-success" value="Enter" /></div>
</form:form>

我的 Controller :

@RequestMapping(value = "/dogEdited", method = RequestMethod.GET)
public String editDog(@RequestParam("id") Long id, @ModelAttribute CreateDogs updatedDog,ModelMap model, HttpServletResponse response){
repo.updateByID(updatedDog);

return "displayInfo";
}

我在数据库中的查询(问题发生的地方):

@Query(value="start n=node({dog}.getId()) set n.weight={dog}.getWeight();")
void updateByID(@Param("dog") CreateDogs dog);

我想要做的是使用作为参数传入的对象来更新所有字段或任何已更改的字段。

最佳答案

您无法在 cypher 中调用方法,因为 Cypher 对 POJO 或 Java 对象一无所知。

例如{dog}.getId()

我建议仅传递 idweight 两个参数,或传递带有 {id:3345, Weight:24} 的 map 。

那么你可以这样做:

match (n) where id(n) = {dog}.id set n.weight={dog}.weight

关于java - neo4j Cypher 查询 - 仅更新更改的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31378065/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com