JPA单向@OneToMany性能

时间:2013-08-20 10:52:37

标签: performance hibernate jpa

我有两个unidirectional @OneToMany Lazy关系的实体。当我尝试添加一个孩子时,似乎Hibernate 4(我的JPA提供者)实际执行

  1. 选择查询
  2. 删除联接表上具有该父ID的所有子项
  3. 在连接表
  4. 上重新插入所有和新的子项

    如何让Hibernate只是插入我想要的孩子而不改变我的关系?

2 个答案:

答案 0 :(得分:2)

默认情况下,单向@OneToMany关系将使用连接表,它将执行操作作为我的问题。如果您使用JPA2并且不在父级上使用多态,则可以添加@JoinColumn,这将在子表而不是另一个连接表上创建外键。然后JPA提供程序将不执行删除并重新插入。

答案 1 :(得分:1)

使双向关系可以解决您的问题。您可以阅读一些信息here