我有一张桌子X:Id,姓名
我有一个表Y:Id,Name,X_Id
我有一个表Z:Id,Y_id
如何执行可返回的条件查询或HQL查询 链接到X对象的所有Z对象ID。
(在我的例子中,X是对话空间,Y是对话,Z是类别)
HBM:
Conversation对象具有以下类别映射:
<set name="allCatIdSet" table="CATEGORIES" lazy="true">
<cache usage="read-write" />
<key>
<column name="ITEM_ID" index="MY INDEX"/>
</key>
<element type="string">
<column name="VALUE" length="64" index="MY INDEX"/>
</element>
</set>
Conversation Space的外键id:
<property name="conversationSpaceId" length="64" index="CONVSPACEINDEX"/>
答案 0 :(得分:1)
简短的问题,简短的回答:
public List<Z> findZbyX(X x) {
// query Z objects
String hql = "FROM Z z WHERE z.y.x = :x"
Query query = sessionFactory.getCurrentSession().createQuery(hql);
query.setParameter("x", x);
return query.list();
}
这将返回Z对象的列表,如果您真的需要Z的ID列表,请将您的HQL更改为SELECT z.id FROM Z z WHERE z.y.x = :x
。