【发布时间】:2017-09-29 20:40:53
【问题描述】:
查询对象并在排序列表中返回其列表属性的最佳方法是什么?
例子:
考虑到下面的场景,进行组查询的最佳方法是什么,通过带来:按名称排序的项目列表和(对于每个项目)按 StateObject 的描述排序的 StateItem 列表?
public class Group {
// ...
@Fetch(FetchMode.JOIN)
@OneToMany(mappedBy = "group")
private List<ItemGroup> itemList;
// ...
}
public class ItemGroup {
// ...
@JoinColumn(name="ID_GROUP", referencedColumnName="ID_GROUP")
@ManyToOne
private Group group;
@Fetch(FetchMode.JOIN)
@OneToMany(mappedBy = "item")
private List<StateItem> stateList;
// ...
}
public class StateItem {
// ...
@JoinColumn(name="ID_ITEM", referencedColumnName="ID_ITEM")
@ManyToOne
private ItemGroup item;
@JoinColumn(name="CD_STATE", referencedColumnName="CD_STATE")
@ManyToOne
private StateObject state;
// ...
}
public class StateObject {
// ...
@Column(name="DE_STATE_OBJECT", length=255)
private String description;
// ...
}
PS:我认为我不能使用@OrderBy,因为我必须按子属性排序,就像在 StateObject 示例中一样。 使用 @SortNatural 或 @SortComparator 的解决方案不是高性能的。 我可以只使用 HQL 或 Criteria 来完成这项工作吗?
【问题讨论】:
-
最好在父类中写
@NamedQuery。
标签: java hibernate sorting sql-order-by