2

我有一个具有价值属性的实体:

@Entity
public class Scenario{
  ..
  @ManyToMany
  List<Category> categories;
  ..
}

有什么方法可以查询Scenarios和订购categories属性的查询结果,如下所示:

select scenario from Scenario scenario order by scenario.category

更准确地说,我们有兴趣从每个Scenario列表中对第一个类别进行排序并忽略其余部分。我们可以在 JPQL/Criteria 查询中做这些事情吗(例如,Comparator以某种方式传递自定义)?

4

2 回答 2

2

您的问题意味着categories集合具有定义的顺序。如果它是一个索引集合(即它用 注释@OrderColumn)并且您想对第一个 s 进行排序,Scenario您 应该能够执行以下操作:nameCategory

select s from Scenario s left join s.categories c 
where index(c) = 0 order by c.name
于 2012-09-10T08:38:47.177 回答
0

我们使用hibernate注解对数据进行排序:

@Sort(type = SortType.NATURAL)
private SortedSet<Category> sections = new TreeSet<Category>();

在这里我们使用Set注释,因为我们也想要独特的元素。

public class Category implements java.io.Serializable, Comparable<Category> {

    public int compareTo(Category category) {    
        // Your implementation of compareTo
    }
}
于 2012-09-10T08:44:12.620 回答