编辑是持久保存另一个实体,但没有设置它

时间:2013-08-28 22:53:20

标签: java jpa

我对JPA有一个疑问:

我有一个实体,我刚刚添加了与其他实体的关系,所以当我编辑第一个实体时,必须保留另一个对象并在第一个实体上设置更新它。

以示例

公司是第一个实体,我刚刚添加了经理实体,所以我的公司现在有一个名为“manager”的新字段,与经理表有关系(由于该经理可以管理1到多家公司,因此多对一)。

在我的课程定义中,我有这个:

Company.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);

2 个答案:

答案 0 :(得分:1)

您能否显示将经理与公司关联的代码?请注意:

  • 您还必须将公司与经理联系起来:例如manager.addCompany(公司)
  • 您确定您的mappedBy属性设置正确吗?公司类上是否有setAsistente方法?

答案 1 :(得分:0)

好的家伙感谢阅读并回答这个问题。

这个问题是我在早期开发中的find方法中忘记的“分离”。现在它完美无缺。