2012-06-19 58 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

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