2016-10-07 5 views
2

は現在、私はHibernateのクライテリアAPIで働いていると私は状況を次しまっ:Hibernateの基準複数のテーブル

@Entity(name = "A") 
private class A { 
    @Id 
    @GenericGenerator(name = "fileEntryIdGenerator", strategy = "increment") 
    @GeneratedValue(generator = "fileEntryIdGenerator") 
    @Column(name = "DBID") 
    private Long id; 

    @Column 
    private String name; 
    @OneToMany(targetEntity = B.class, cascade = {CascadeType.ALL }, fetch = FetchType.LAZY) @JoinColumn(name = "A_id") 
    private Set<B> references; 
    // .... 
} 

@Entity(name = "B") private class B{ 
@Id 
@GenericGenerator(name = "fileEntryIdGenerator", strategy = "increment") 
@GeneratedValue(generator = "fileEntryIdGenerator") 
@Column(name = "DBID") 
private Long id; @Column private String name;...} 

、私の計画は、すべてのBのA.name =「テスト名」のリストを取得することです。 したがって、私はcriteriaステートメントが必要です。

誰かが私を助けてくれますか?

+0

http://stackoverflow.com/questions/720502/hibernate-criteria-joining-table-without-a-mapped-association – sina

+0

私はそれが同じではないと思います。スレッド作成者はB.name = lalaのすべてのAを取得しようとします。私はすべてのBがA.name = lalaのところに欲しいです。 – Phi

答えて

1

基準APIを使用して2つのテーブルを結合しようとしています。下記のコードを確認してください。上記のコードで

Criteria criteria = session.createCriteria(B.class, "B"); 
criteria.createAlias("B.A", "A", JoinType.INNER_JOIN); 
criteria.add(Restrictions.eq("A.name", "name")); 
criteria.list(); 

1ライン - 基準は、クラスB

2行目のために作成されたオブジェクト - Bは、マッピング列に基づいてAと結合さ

第3行 - Aの名前列に基づいて制限が行われます。

第4行 - リストを取得するために条件が実行されます

また、私は、クラスB(多対1)のクラスAのマッピングがあると思います。

+0

本当にうまく見えますが、私はこの例外が発生します。プロパティを解決できませんでした:A of B – Phi

+0

クラスAのクラスを複数対1の注釈を持つクラスBのフィールドとして追加する必要があると思います。可能であれば – Sibi

+0

この追加の関係を避けたい – Phi

関連する問題