Hibernate通过一个ElementCollection来订购实体结果



我有一个模型,看起来像这样:

@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中支持您直接寻找的内容。

相关内容

  • 没有找到相关文章

最新更新