我的模型看起来像这样:
@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
答案 0 :(得分:0)
您可以创建一个类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中支持您正在寻找的内容的任何内容。