2015-07-13 83 views
1

這是一個非常簡單的問題,我真的不明白如何做到這一點。我有一個用戶可以更新信息的表單,該信息需要在數據庫中更新。我不斷收到異常無效的數據訪問資源使用情況,我知道我的查詢出了問題。我正在使用neo4j數據庫。任何人都可以幫助更新數據庫中對象的字段。任何幫助將不勝感激。neo4j Cypher查詢更新更改字段只

我的形式:

<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> 

我的控制器:

@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); 

我想要做的就是更新所有字段或任何已將對象作爲參數傳入的已更改字段。

回答

0

由於Cypher不知道POJO或Java對象的任何內容,所以不能調用密碼方法。

例如{dog}.getId()

我建議只傳遞idweight的兩個參數或者帶有{id:3345, weight:24}的地圖。

那麼你可以做:

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

謝謝你,這是它! – beginnerCoder