親オブジェクトにこれを持っています
@OneToMany(mappedBy="idUser", cascade = CascadeType.MERGE)
public List<Directions> directions;
そして、私のコントローラーにはこれがあります
public static void userUpdate(String apikey, JsonObject body) {
if(validate(apikey)) {
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();
}else{
forbidden();
}
}
親オブジェクトを更新しますが、子オブジェクトで何かを変更しても更新されず、休止状態やOracleでも問題が発生しません。
子オブジェクトを更新しない理由を知っている人はいますか?
皆さんありがとう!
ソリューションで更新!
@JB Nizetが子オブジェクトも保存する必要があると言ったように、これが私にとってどのように機能するかです。
oldUser.em().merge(user);
oldUser.save();
for (Direction direction : oldUser.directions) {
direction.save();
}
別のアプローチ!
これとともに
@OneToMany(cascade = CascadeType.ALL)
@JoinColumn(name = "SASHNBR", insertable = true, updatable = true)
public List<Direction> directions;
oldUser.save() を作成して、子オブジェクトを保存することができました。