基于嵌套路径排序属性的Hibernate查询

时间:2010-01-20 20:52:38

标签: java hibernate hql

我有两个对象,条目和样本。每个条目都有一组相关的样本,每个样本都有一个与之相关的投票。我需要在数据库中查询所有条目,但对于每个条目,我需要根据其投票属性排序的相关样本集:

public Class Entry{
    Set<Sample> samples;
}

public Class Sample{
    int vote;
}

我在执行查询后尝试对样本列表进行排序,但事实证明这是一团糟,因为无法在hibernate集和java集之间进行转换。有人可以帮我改变我的查询以获得我需要的结果吗?

List<Entry> entries = jpaTemplate.find("from Entry");

2 个答案:

答案 0 :(得分:2)

我找到了解决这个问题的简单方法。有一个完美的@OrderBy JPA注释:

@OneToMany(cascade = {CascadeType.PERSIST, CascadeType.MERGE})
@OrderBy("votes DESC")
public Set<Sample> getSamples() {
    return samples;
}

答案 1 :(得分:0)

根据休眠faq: 有三种不同的方法:

  1. 使用SortedSet或SortedMap,在sort属性中指定比较器类或或。这个解决方案在内存中排序。

  2. 指定或按名称排列表列列表的order-by属性。此解决方案仅适用于JDK 1.4 +。

  3. 使用过滤器session.createFilter(集合,“order by ....”)。list()