2016-05-09 10 views
0

は私のコードです:Hibernateはここでカウントエイリアスの投影を行う

class A{ 
    Integer id 
    String name 
    Set<B> bs; 

    //Getters and setters 
} 

class B{ 
    Integer id; 
    A a; 

    //Getters and setters 
} 

私はAのすべての行を取得するには相談しないと、行ごとA.

へホイ多くのBの参照を知っている必要が必要

私はSQLクエリを持っていますが、私はいけないのJava

に休止状態でそれを行う方法を知っている

Simplificatedクエリ:

select 
    a.ID as y0_, 
    (select count(*) from 
     B b 
     where b.c47=a.ID 
     and b.FDL='N' 
     ) as count, 
from 
    A a 
inner join 
    C c 
     on a.operario=c.ID 
where 
    a.DID=2 
    and a.FDL='N' 

感謝事前

答えて

0
@Entity 
@Table(name = "a_table") 
class A 
{ 
    @Id 
    @GeneratedValue 
    Integer id; 

    @Column 
    String name; 

    @OneToMany(mappedBy = "a") 
    Set<B> bs; 

    //Getters and setters 
} 

@Entity 
@Table(name = "b_table") 
class B 
{ 
    @Id 
    @GeneratedValue 
    Integer id; 

    @ManyToOne(fetch = FetchType.LAZY) 
    @JoinColumn(name = "a_id") 
    A a; 

    //Getters and setters 
} 

にHQL:

select a.id, count(bs) 
from A a 
left join a.bs bs 
inner join a.c c 
where 
    a.id = 2 
    and a.FDL='N' 
    and bs.FDL='N' 
+0

はい、私のクラスでは、このようなものですが、簡単のために、私はすべての属性と注釈を削除します。私だけがHQLを行うことができますか?基準を使用することはできますか? – hlastras

+0

私は基準でそれを行うことは可能だと推測しますが、私はそれに精通していません。私は別の質問のためだと思います:) – aviad