2

如何在 eclipselink 中进行简单的连接查询?我想接收 ArrayList;例如,我有两个实体:

public class A implements Serializable {

 @Id
 @GeneratedValue(strategy = GenerationType.IDENTITY)
 @Basic(optional = false)
 @Column(name = "id")
 private Long id;
 @Column(name = "value")
 private String value;   

 @OneToMany(mappedBy = "aid")
 private Collection<B> bCollection; 

}

public class B implements Serializable {

 @Id
 @GeneratedValue(strategy = GenerationType.IDENTITY)
 @Basic(optional = false)
 @Column(name = "id")
 private Long id;

 @JoinColumn(name = "a_id", referencedColumnName = "id")
 @ManyToOne
 private A aid;   

}

我想执行这样的查询:

Select * From A a Join B b ON a.id = b.a_id Where a.value = '1';

我这样做:

EntityManager em = createEntityManager();
Query q = em.createQuery("Select a From A a Where a.value = 1");
q.setHint("eclipselink.join-fetch", "a.bCollection");
Object result = q.getResultList();

并且我收到 A 对象,该对象具有指向 B 对象(bCollection)的链接,而 B 对象(bCollection)具有 A 对象(aid)的链接,因此无限期。正常吗?

4

1 回答 1

1

是的。在bidirectional mappingie中,父母指的是孩子,孩子指的是父母,这是正常的。但是,如果您不无限期地访问圆形图,那您就很好。

于 2012-10-18T05:39:11.610 回答