1

我有一个控制器,它从 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,用户)并制作 oldUser.save()?还是有其他想法?

感谢大家的帮助!:)

4

1 回答 1

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 的主对象。

不管怎么说,还是要谢谢你 :)

于 2012-06-19T11:44:06.200 回答