【发布时间】:2017-10-29 15:13:09
【问题描述】:
我想加入 2 个表并进行查询:
具有列 id、数据的 tableA
具有列 id、键的 tableB
说,我在tablea中有一行:
id=5, data='xyz'
tableb 中有两行:
id=5, key='key1'
id=5, key='key2'
现在我想运行以下 SQL:
select * from tablea a left outer join tableb b on (a.id = b.id and b.key='key3')
这让我得到一个结果:
id=5, data='xyz', key=null
如何使用 hibernateTemplate 做到这一点?
我尝试使用以下休眠映射文件:
<hibernate-mapping package="de.xxx.vo">
<class name="zBean" table="TABLEA">
<subselect>
SELECT
a.id, a.data
FROM
tablea a
LEFT OUTER JOIN tableb b on a.id = b.id
</subselect>
<id name="id" column="ID" type="long"/>
<property name="data" column="DATA" type="string" />
<property name="key" column="KEY" type="string" />
</class>
</hibernate-mapping>
还有这个 java-code-sniplet:
DetachedCriteria crit = DetachedCriteria.forClass(zBean.class)
.add(Restrictions.eq("key", "key3"));
List<ListViewDataBean> result = hibernateTemplate.findByCriteria(crit);
该代码生成的 SQL 略有不同:
select * from tablea a left outer join tableb b on (a.id = b.id) where b.key='key3'
【问题讨论】: