【发布时间】:2023-03-20 08:05:01
【问题描述】:
我的数据库中有一个公司/员工@OneToMany 关系定义为:
@Entity
public class Employee {
@Id @GeneratedValue(strategy=GenerationType.IDENTITY)
private long id;
@ManyToOne @JoinColumn(name="companyid")
Company company;
....
}
@Entity
public class Company {
@Id @GeneratedValue(strategy=GenerationType.IDENTITY)
private long id;
...
}
现在我正在向一家独立公司添加一个新创建的员工。我使用的代码是这样的:
Company company = em1.find(Company.class, 555L);
em1.close();
EntityTransaction et = em2.getTransaction();
et.begin();
Employee employee = new Employee();
employee.company = company;
em2.persist(employee);
et.close();
这样可以吗?
hibernate 是将公司合并到第二个 EntityManager 还是只使用它的 id 并保留员工对象?
hibernate 可能会以某种方式复制我的公司对象或抛出异常,说明数据库中已存在具有相同 id 的公司?
【问题讨论】:
-
值得一提的是,进行公共字段设置 (employee.company = company) 为持久性解决方案提供了最小的机制来了解字段已更改;最好使用 setter,这样任何实现都会很开心。
标签: java hibernate jpa entity-relationship