我有一个模型,看起来像这样:
@Entity
@Table(name = "tSomething")
public class Something {
@Id
private Long id;
private String name;
@ElementCollection
@CollectionTable(name = "tSomething_units")
private List<String> units = new ArrayList<>();
// snip getters/setters
}
我可以通过以下操作检索由name
排序的东西的列表:
Criteria criteria = session.createCriteria(MinutesCode.class);
criteria.addOrder(Order.asc("name"));
一切如期而至:
5, Alice, CC
1, Bob, AA, AB, CC
4, Carol, AB
2, Dave, DD, AB
我如何按units
排序,使它们像这样出来:
1, Bob, AA, AB, CC
4, Carol, AB
5, Alice, CC
2, Dave, DD, AB
您可以创建一个类,命名为MyCriteria
,它实现Criteria
接口并具有一个构造函数,该构造函数将另一个Criteria
作为输入参数。这将使您的代码看起来像这样:
Criteria criteria = new MyCriteria(session.createCriteria(MinutesCode.class));
criteria.addOrder(Order.asc("name"));
List results = criteria.list();
MyCriteria
将传入的方法调用传递给包装的Criteria
。然而,list()
方法将从包装的Criteria
中获取结果,并在返回结果之前根据应用程序的需要重新排序结果。
我不知道Criteria
api中支持您直接寻找的内容。