0
堆棧搜索,但沒有找到答案。我有幾個文本框的子頁面,當我編輯的數據字段插件發送回覆到我的控制器:X-editable插件和Spring MVC - 更新實體的最佳方式
@RequestMapping(value = "/myAcc", method = RequestMethod.POST)
public String getValues(@ModelAttribute XEditableForm form){
userService.update(form.getPk(), form.getValue());
return "myAcc";
}
其中userService使用戶更新的數據庫
@Transactional
public void update(long id, String firstName){
User user= userRepository.findOne(id);
user.setFirstName(firstName);
userRepository.save(user);
}
的問題是,每次在這種方法中,我會檢查xeditable插件返回的內容,並更新特定的用戶字段,例如姓氏等。在我看來,這不是最好的解決方案。
XEditableForm回報:
pk - primary key of record to be updated (ID in db)
name - name of field to be updated (column in db)
value - new value
問題要問你。我怎樣才能做得更好?
這取決於。如果它只是一個提交按鈕,那沒有任何開銷。如果您希望每次按鍵都立即反映數據庫的表單更改,我建議僅在自上次按鍵後幾秒鐘後發送請求,或者查找某個事件,告知您已完成併發送數據。如果不需要在數據庫中保存立即更改,則可以更新模型屬性/分離實體/ smth else,並在稍後保留或合併它。 –
我認爲我的解釋不完整。這個想法是用戶可以改變幾個字段的值。每次更改後,用戶對象都會在數據庫中更新。所以現在我不得不寫一些方法來檢測每個領域的變化。如果用戶只更改姓氏,我必須檢查其他字段並只更新非空字段。 我問是否有任何方法通過創建一個對象來概括這個例子,然後更新它。你在這裏提到關於合併。您可以展示它在JPARepository接口中的外觀示例嗎? – Adamo