我在使用 JPA 时遇到了一个奇怪的问题:
我有一个实体,并且刚刚添加了与其他实体的关系,因此当我编辑第一个实体时,必须保留另一个对象并将其设置在更新它的第一个实体上。
举例
公司是第一个实体,我刚刚添加了经理实体,因此我的公司现在有一个名为“经理”的新字段,该字段与经理表相关(多对一,因为该经理可以管理一对多公司)。
在我的这个场景的类定义中,我有这样的:
公司.java:
@JoinColumn(name = "manager", referencedColumnName = "id")
@ManyToOne
private Manager manager;
Manager.java:
@OneToMany(mappedBy = "manager")
private List<Company> companies;
因此,我将新经理设置为某家公司,当我通过 Remotefacade 进行编辑时,会创建新经理,但不会在前一家公司中设置。
有些奇怪的是我在任何地方都没有cascade.persist注释,但在编辑时被保留。
有人可以帮助我吗:)?
编辑:
这就是我将经理设置为公司的方式:
action.java
Manager m = new Manager();
... (set all the data)
Company c = companyFacade.find(1); // find by ID
c.setManager(m);
companyFacade.edit(c);
最佳答案
您能否显示将经理与公司关联起来的代码?请注意:
- 您还必须将公司与经理关联起来:例如manager.addCompany(公司)
- 您确定您的mappedBy 属性设置正确吗? Company 类上有 setAsistene 方法吗?
关于java - 编辑正在保留另一个实体,但没有对其进行设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18499608/