2012-06-19 92 views
1

我有一個控制器,它從POST方法獲取JsonObject,將其解析爲Model對象並保存。玩框架,保存前合併對象

主要的問題是我必須使用數據庫對象,使用新對象值對其應用更改,然後保存舊對象。這不會是一個問題,如果他們在2個屬性但用戶是一個大對象,我想在那裏做一些乾淨的代碼。

這是代碼:

public static void userUpdate(String apikey, JsonObject body) { 
    Long idUser = decode(apikey); 
    User oldUser= User.findById(idUser); 

    Map<String, User> userMap = new HashMap<String, User>(); 
    Type arrayListType = new TypeToken<Map<String, User>>(){}.getType(); 
    userMap = gson().fromJson(body, arrayListType); 
    User user = userMap.get("user"); 

    oldUser.cif = user.cif; 
    oldUser.date_last_mod = user.date_last_mod; 
    oldUser.save(); 
} 

有沒有一種方法,使合併(oldUser,用戶),並oldUser.save()?還是其他想法?

謝謝大家的幫助! :)

回答

0

我解決它這樣。

public static void userUpdate(String apikey, JsonObject body) { 
    Long idUser = decode(apikey); 
    User oldUser= User.findById(idUser); 

    Map<String, User> userMap = new HashMap<String, User>(); 
    Type arrayListType = new TypeToken<Map<String, User>>(){}.getType(); 
    userMap = gson().fromJson(body, arrayListType); 
    User user = userMap.get("user"); 

oldUser.em().merge(user); 

oldUser.save(); 
} 

你可以得到的EntityManager利用合併的選項,從來就做一些測試,但第一個結論我提出的是,對象您呼叫合併爲是一個世衛組織的中奴隸和你傳遞的參數是主對象,它將用新值更新oldUser。

無論如何感謝:)

+1

好信息。我學到了一件新事物。 –