2

我有一个映射到一组对象的对象,非常简单。但是,我真正想做的是在该映射上设置一些标准。这是当前的映射:

    <set name="ops" inverse="true" cascade="all, delete-orphan">
        <key column="cityblock_id" on-delete="cascade"/>
        <one-to-many class="com.tamedtornado.data.Operation"/>
    </set>

现在,我不想只获取所有相关的操作,我只想获取尚未完成、已经完成或其他的操作。Hibernate 文档对此非常安静,尽管一些旧论坛帖子向我展示了一些内容。您显然可以使用 sql-query 标记,但这也不是我想要做的。

无论如何用 HQL 查询来做到这一点?我只想用一个简单的查询来缩小结果范围,并有一些集合图,比如 active_ops 和 completed_ops 等。

干杯,杰森

4

2 回答 2

3

低于6.2。在 Hibernate 文档中的集合映射,您会发现可以在任何集合映射上使用 WHERE 子句:

where(可选)指定检索或删除集合时要使用的任意 SQL WHERE 条件(如果集合应仅包含可用数据的子集,则很有用)

您说您想使用 HQL 查询,但我认为这是不可能的。但是由于您只需要在映射中指定一个简单的 WHERE 子句,因此 HQL 和“真正的”SQL 之间并没有太大的区别。

于 2009-01-11T11:29:29.680 回答
0

我不确定我是否清楚地理解了您的问题,但您似乎需要在 SQL 查询中使用 where 子句

您应该能够在 HQL 中使用 where 子句或在 hibernate 中使用条件 api 来实现所需的结果:

假设您有一个名为“活动”或“已完成”的状态字段,您的 HQL 应该如下所示:

from ops where status="active"

或者如果使用标准 api:

List activeOperations = sess.createCriteria(Operation.class)
    .add( Restrictions.equals("status", "active") )
    .list();

hibernate 教程的第 14 章和第 15 章稍微谈到了这一点: http ://www.hibernate.org/hib_docs/v3/reference/en/html/index.html

于 2009-01-11T07:54:47.587 回答