Play Framework,保存前合并对象

时间:2012-06-19 10:39:20

标签: java orm playframework save

我有一个控制器从POST方法获取JsonObject,将其解析为Model对象并保存。

主要问题是我必须使用数据库对象,使用新对象值对其应用更改,然后保存旧对象值。如果他们在2个属性但User是一个大对象并且我想在那里制作一些干净的代码时,这不会有问题。

这是代码:

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,user)和makeUser.save()?还是其他任何想法?

谢谢大家的帮助! :)

1 个答案:

答案 0 :(得分: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。

非常感谢:)