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、user)を作成して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 に答える