我有两个对象,条目和样本。每个条目都有一组相关的样本,每个样本都有一个与之相关的投票。我需要在数据库中查询所有条目,但对于每个条目,我需要根据其投票属性排序的相关样本集:
public Class Entry{
Set<Sample> samples;
}
public Class Sample{
int vote;
}
我在执行查询后尝试对样本列表进行排序,但事实证明这是一团糟,因为无法在hibernate集和java集之间进行转换。有人可以帮我改变我的查询以获得我需要的结果吗?
List<Entry> entries = jpaTemplate.find("from Entry");
答案 0 :(得分:2)
我找到了解决这个问题的简单方法。有一个完美的@OrderBy JPA注释:
@OneToMany(cascade = {CascadeType.PERSIST, CascadeType.MERGE})
@OrderBy("votes DESC")
public Set<Sample> getSamples() {
return samples;
}
答案 1 :(得分:0)
根据休眠faq: 有三种不同的方法:
使用SortedSet或SortedMap,在sort属性中指定比较器类或或。这个解决方案在内存中排序。
指定或按名称排列表列列表的order-by属性。此解决方案仅适用于JDK 1.4 +。
使用过滤器session.createFilter(集合,“order by ....”)。list()