2

eclipselink で単純な結合クエリを作成するにはどうすればよいですか? ArrayList を受け取りたい; たとえば、次の 2 つのエンティティがあります。

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)へのリンクを持つAオブジェクトを無期限に受け取ります。それは正常ですか?

4

1 に答える 1

1

はい。bidirectional mappingつまり、親は子を参照し、子は親を参照しますが、それは正常です。しかし、循環グラフに無期限にアクセスしなければ問題ありません。

于 2012-10-18T05:39:11.610 に答える