首页 > 解决方案 > 如何使用 Hibernate Criteria API 通过多对多关系对实体进行排序?

问题描述

我需要通过多对多关系订购我的实体。

假设我的域如下:

@Entity
public class Field {
  ....

  @ManyToMany
  @JoinTable(name="field_crop", joinColumns={@JoinColumn(name="field_id")}, inverseJoinColumns = {@JoinColumn(name="crop_id")})
  @OrderBy(value="name")
  private List<Crop> crops;

  ....

}

@Entity
public class Crop {
  ....

  private String name;

  ....

}

假设在我的域中,我有以下数据:

使用关系@OrberBy上的注释@ManyToMany,我将Crop列表中的元素按其名称排序:

按照 Crop 实体的 name 属性排序,获取所有 Field 实体的预期结果是:

我如何通过Hibernate Criteria做到这一点?

标签: javahibernatejpa

解决方案


如果您在实体类Comparator中的事件侦听器中编写并排序列表,那将是最好的。@PostLoad


推荐阅读