Hibernate命令实体由ElementCollection产生

时间:2016-10-27 23:56:20

标签: java hibernate

我的模型看起来像这样:

@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

1 个答案:

答案 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中支持您正在寻找的内容的任何内容。