查询具有id投影的三个表

时间:2011-12-13 17:12:35

标签: sql hibernate hql

我有一张桌子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"/>

1 个答案:

答案 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