Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用JPA持久化的关系_Java_Jpa_Jpa 2.0_Eclipselink - Fatal编程技术网

Java 使用JPA持久化的关系

Java 使用JPA持久化的关系,java,jpa,jpa-2.0,eclipselink,Java,Jpa,Jpa 2.0,Eclipselink,我想知道两个实体之间是否存在关系,例如salesOrder实体和SalesOrderItem之间是否存在关系一对多 我应该如何坚持它们,即我需要保持秩序和关系,还是有办法保持秩序和关系 将persist和first分开,例如从销售订单项开始,然后再从销售订单开始。 这只是一个例子,我想知道是否有一种方法可以在JPA持久化过程中忽略关系 并在不需要引用关系的情况下持久化该对象,但当然,如果有外键,请一次提供它。通常,您希望按如下方式持久化它们: 建立两个实体之间的所有联系;如果子级引用父级,则设置

我想知道两个实体之间是否存在关系,例如salesOrder实体和SalesOrderItem之间是否存在关系一对多 我应该如何坚持它们,即我需要保持秩序和关系,还是有办法保持秩序和关系 将persist和first分开,例如从销售订单项开始,然后再从销售订单开始。 这只是一个例子,我想知道是否有一种方法可以在JPA持久化过程中忽略关系
并在不需要引用关系的情况下持久化该对象,但当然,如果有外键,请一次提供它。通常,您希望按如下方式持久化它们:

  • 建立两个实体之间的所有联系;如果子级引用父级,则设置该引用。如果父项引用子项(ren),则设置该/那些引用

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

  • 您询问“是否有一种方法可以划分持久化,例如首先从销售订单项开始,然后再从销售订单开始”。由于项目通常会引用其包含的订单,因此很难想象任何合理的场景,您会在订单之前保留项目。你问这类问题时对问题的理解太少,我的立场是,你还没有真正准备好解决那些可能(或可能不)让它们为你工作的例外情况。最好坚持正确的做法


    即使订单包含子项目的
    列表
    映射
    ,只要项目实体包含对订单的特定引用,也可以首先创建订单(@OneToMany中的“一”)。在给定的“工作单元”(实体管理器会话)中,在添加/创建并持久化其他子项时,您仍然需要更新父项的列表/映射。

    我不理解您的问题。请提供一些代码。我问这个概念,如果我可以直接为实体x输入数据,而不必担心实体y的关系。你为什么投反对票?我问这个概念,如果我可以直接为实体x输入数据,而不必担心实体y的关系,例如,如果我直接将数据输入数据库,我不需要输入关心他们之间的关系。你为什么投反对票?@Richard谢谢你的回答,也许我试着更好地解释我自己。我们正在尝试开发的是java api,它可以动态地(可以是任意的)获取类(类名称-即entitys)列表,我需要使用反射和从文件添加数据的类型来构建实体(我们正在创建api,从文件为entitys创建模拟数据)当我进行反射时,我在实体类内部有对另一个类的成员引用,我的问题是我是否必须构建它,或者我是否可以继续,当完成持久化实体a时,从实体b开始,