Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/315.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.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 Find方法返回错误关联的对象_Java_Hibernate_Jpa - Fatal编程技术网

Java JPA Find方法返回错误关联的对象

Java JPA Find方法返回错误关联的对象,java,hibernate,jpa,Java,Hibernate,Jpa,我保存了一个对象列表a和一个对象列表B 我持久化了2个对象A,它们都有一个包含3个对象B的列表。这3个对象在两个列表中是相同的(相同的引用) 在DB中,关联似乎很好: Table A_2_B ID_B | ID_A -------------------------- B1 | A1 B2 | A1 B3 | A1 B1 | A2 B2 | A2 B3 | A2 当检索对象

我保存了一个对象列表a和一个对象列表B

我持久化了2个对象A,它们都有一个包含3个对象B的列表。这3个对象在两个列表中是相同的(相同的引用)

在DB中,关联似乎很好:

Table A_2_B
ID_B        | ID_A
--------------------------
B1          | A1
B2          | A1
B3          | A1
B1          | A2
B2          | A2
B3          | A2
当检索对象A的列表时,我的2个对象A都有一个包含3个对象B的列表,而不是一个大小为2的列表,而是一个包含6个对象A的列表,所有对象A都有一个包含这3个对象B的列表。 在DB中,映射似乎正确完成了,但在检索对象时却没有

哪些操作不正确

下面是A对象的映射文件:

<entity name="ProductDefinition" class="mapp3.model.A" access="FIELD">

    <table name="T_A"/>

    <attributes>

      <id name="uniqueIdentifier">
        <column name="UUID" length="100"/>
      </id>

      <basic name="type">
        <column name="TYPE" length="100" />
      </basic>

      <many-to-many name="B" target-entity="mapp3.model.B" fetch="EAGER" access="FIELD">

        <join-table name="A_2_B"/>

        <cascade>
          <cascade-persist/>
          <cascade-merge/>
          <cascade-refresh/>
        </cascade>

      </many-to-many>

    </attributes>

更新,实体和实体之间的映射:

<entity name="Universe" class="mapp3.model.Entity" access="FIELD">

        <table name="ENTITY"/>
        <attributes>

            <id name="uri">
                <column name="URI" length="200"/>
            </id>

           <one-to-many name="A" target-entity="mapp3.model.A" fetch="EAGER" access="FIELD">

                <join-table name="ENTITY_2_A"/>

                <cascade>
                    <cascade-persist/>
                    <cascade-merge/>
                    <cascade-refresh/>
                </cascade>

            </one-to-many>

        </attributes>

    </entity>


显示您用于JPA引入实体的查询。因为您在映射上有一个渴望的联接,所以您的提供者可能会生成在表之间进行笛卡尔联接的SQL,因为这些2x3对象将返回6行,但在构建实体时它应该过滤结果,除非您在查询本身中请求联接。如果有,您可以使用Distinct关键字从结果中筛选重复As。我正在使用实体管理器进行简单查找..简单查找返回单个实体,而不是集合。好的,但我有一个包含以下集合的实体:)好的,那么这不是一个混乱的查找操作,这是从该实体到A的映射。如何获取该实体,如何设置它与A之间的映射,以及如何添加引用?