我对Ebean有一点问题(在Play Framework,Java的上下文中)。 我有分享一对多关系的元素(BankAccount< - BankingOperation)。
我已经使用以下字段定义了BankAccount类:
@JsonIgnore
@OneToMany(cascade = CascadeType.ALL)
public List<BankingOperation> operations = new ArrayList<BankingOperation>();
对于银行业务,相应的字段:
@ManyToOne
@JsonIgnore
public BankAccount bankAccount;
我的问题是,当我尝试更新银行帐户时,会删除相关操作。这是我正在使用的代码:
public static Result saveAccount(Long id)
{
Form<BankAccount> form = Form.form(BankAccount.class).bindFromRequest();
if (form.hasErrors() || form.get().id != id) {
return badRequest();
}
form.get().update(id);
return ok();
}
我觉得删除操作是因为当我执行form()。get()时它们没有被加载,因此,当与DB同步时,Ebean会做出似乎是最好的解决方案。它
有人对此问题有任何线索吗?还有其他我尚未发现的解决方案吗?
提前感谢您的帮助!
答案 0 :(得分:0)
现在,我发现了一个(丑陋的)解决方案,在进行更新之前添加以下行:
Ebean.refreshMany(form.get(), "operations");
另一个解决方案可能不是在模型类中构建表单,而是在另一个类上构建,迫使我逐个映射每个字段。