Java JPA Find方法返回错误关联的对象
我保存了一个对象列表a和一个对象列表B 我持久化了2个对象A,它们都有一个包含3个对象B的列表。这3个对象在两个列表中是相同的(相同的引用) 在DB中,关联似乎很好: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 当检索对象
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之间的映射,以及如何添加引用?