hibernate从多个表中检索数据

时间:2012-07-21 07:31:22

标签: hibernate

我有3张桌子。 A,B,C。 A与B有一对多 B与C有一对多。

表中的数据是,

TABLE A
id                 
10
15

TABLE B
id      firstName    AandB_Relation_Key
55       Abc           10
66       Pqr           10
77       xyz           10
88       ddd           15

TABLE C
id       phone_no      CandB_Relation_key
41        44444         77
42        55555         77
43        66666         77
44        88888         66

我希望从表C中检索数据,这取决于表A中的id在单个查询中的方式

如果表B在表C中有相关记录,我想显示来自B和C的两个记录,否则只记录表B(即这里firstName“xyz”有多个电话号码所以我将显示xyz = 44444,55555, 66666,ddd没有电话,所以只有ddd)

目前我正在做,

a)从表B中选择所有ID,其中表A中的AandB_Relation_Key = id //它返回表B中的所有id对表A中的id

b)然后我遍历所有id,从表C中对每个id进行计数,从表C中选择count(*),其中id =从a中检索ids

c)如果计数> 0从表B中选择firstName,phoneNo,C

d)否则从表B中选择firstName

感谢。

1 个答案:

答案 0 :(得分:0)

select new list(firstName,phone_no) from A left join B left join C where a.id=:id

我认为应该这样做。你会得到一个带有可选语音的名字列表。