使用JPA持久化的关系

时间:2013-03-09 18:21:29

标签: java jpa jpa-2.0 eclipselink

我想知道两个实体(例如 salesOrder 实体)与 SalesOrderItem 之间是否存在关系,关系一对多 我应该如何坚持他们,即。我需要保持秩序和关系还是有办法 将持久性和第一个分开,例如从销售订单项开始,再从销售订单开始。 这只是一个例子,我想知道在使用JPA持久化期间是否有办法忽略关系 并且保持对象而不需要引用关系,但当然如果有外键一次提供它

1 个答案:

答案 0 :(得分:1)

通常,您希望按如下方式保留它们:

  1. 建立两个实体之间的所有链接;如果child引用parent,则设置该引用。如果父引用了child(ren),则设置那些/那些引用。

  2. 坚持这两个实体。如果一个(父)引用另一个(子),则可以使用Cascade.PERSIST标记该关系,以允许在持久化操作期间遵循引用 - 在这种情况下,您只需要保留该引用。

  3. 您问“是一种划分持久性的方法,例如首先开始销售订单项目而不是销售订单”。由于该项目通常会引用它包含的订单,因此很难想象在订单之前保留该项目的任何合理方案。你问这些问题几乎没有表现出对问题的理解,我认为你并没有真正准备好解决可能(或可能不)允许他们为你工作的例外情况。最好坚持正确的做法。

    首先创建订单(@OneToMany中的'one')可能是合适的,即使订单包含ListMap个子项 - 只要项目实体包含特定的对订单的引用。在给定的“工作单元”(实体经理会话)中,您仍然希望在添加/创建并保留其他子项时更新父列表/地图。