1

現在、データベースに 3 つのテーブルがあります。

Table A:
id:
...

Table B:
id:
...

Table C:
A_id:
B_id:
... 

マッピングされたオブジェクトは次のようになります。

@Entity
@Table(name="A")
Class A{
    Long id;

    @ManyToMany
    @Fetch(FetchMode.SELECT)
    @JoinTable(name="C",joinColumns={@JoinColumn(name="A_id")},inverseJoinColumns={@JoinColumn(name="B_id")})
    List<B> Bs;
}

@Entity
@Table(name="B")
Class B{
    Long id;
}

ここで、DetachedCriteria を使用してクエリを実行し、A.Bs を持つすべての A エンティティを検索したいと思います。特定の B が含まれています。DetachedCriteria でクエリを実行することは可能ですか。

私はSQLがすべきだと思います

Select A.* 
From A inner join C on A.id=C.A_id inner join B on B.id=C.B_id 
Where B.id=? 

どうもありがとう!どんな助けでも大歓迎です。

4

1 に答える 1

4

HQL では、単純に次のようになります。

select a from A a inner join a.bs b where b.id = :id

そして、それは基準に直接変換されます:

Criteria c = session.createCriteria(A.class, "a");
c.createAlias("a.bs", "b");
c.add(Restrictions.eq("b.id", bId);

いつものように、それを説明するドキュメントへのリンク。

于 2013-08-20T16:40:27.753 に答える