Java 播放框架,保存前合并对象
我有一个控制器,它从POST方法获取一个JsonObject,将其解析为一个模型对象并保存它 主要的问题是,我必须使用数据库对象,用新对象值对其应用更改,然后保存旧对象。这不会是一个问题,如果他们有两个属性,但用户是一个大对象,我想在那里做一些干净的代码 代码如下: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=
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
无论如何,谢谢你:好消息。我学到了一个新东西。