通过索引获取数组别名元素

时间:2014-02-18 13:13:48

标签: java hibernate

我有两个对象:

User {
int id,
String name,
List<Status> statusList
}

Status {
int id,
int userId,
String name,
Date createDate
}

我已经将pojo类映射到两个.hbm文件中,在Status.hbm文件中,我说hibernate,我希望从DESC中的基础获取状态,按日期视图排序:

<set name="statuses" order-by="date desc">
    <key>
        <column name="userId" />
    </key>
    <one-to-many class="Status" />
</set>

现在我想选择一个用户列表,它已经选择了(f.e。“Created”或“Deleted”)statusList属性中的第一个元素。

我写道:

sessionFactory.getCurrentSession().createCriteria(User.class)
    .createAlias("statuses", "statusesAlias")
    .add(Restrictions.eq("statusesAlias[0].name", "Created")).list();

但我在

中收到错误
.add(Restrictions.eq("statusesAlias[0].name", "Created"))

所以,这是一个问题 - 当该属性像

这样的别名时,如何访问对象的第一个属性元素?
.createAlias("statuses", "statusesAlias")

1 个答案:

答案 0 :(得分:0)

您可以使用HQL编写此查询样式:

from User where statuses[0].name = 'Created'

我认为没有使用Criteria API的等效表单。