Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 播放框架,保存前合并对象_Java_Orm_Playframework_Save - Fatal编程技术网

Java 播放框架,保存前合并对象

Java 播放框架,保存前合并对象,java,orm,playframework,save,Java,Orm,Playframework,Save,我有一个控制器,它从POST方法获取一个JsonObject,将其解析为一个模型对象并保存它 主要的问题是,我必须使用数据库对象,用新对象值对其应用更改,然后保存旧对象。这不会是一个问题,如果他们有两个属性,但用户是一个大对象,我想在那里做一些干净的代码 代码如下: public static void userUpdate(String apikey, JsonObject body) { Long idUser = decode(apikey); User oldUser=

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

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

代码如下:

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();
}
是否有方法创建mergeoldUser、user和make oldUser.save?还有其他想法吗

谢谢大家的帮助!:

我是这样解决的

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


无论如何,谢谢你:

好消息。我学到了一个新东西。