orderBy在收集领域的目的?

时间:2012-02-17 12:59:36

标签: java hibernate jpa sql-order-by

我试图从数据库中检索有序的元素列表。据我所知,@orderBy注释应该足够了。

可以注释两个地方:

代表集合的字段

@OrderBy
@OneToMany(cascade = CascadeType.ALL, mappedBy = Entry.REPORT_PROP)
private List<Entry> elements 

吸气剂

@OrderBy
public List<Entry> getElements()

问题介绍
如果注释了字段和getter,则正确排序检索到的列表。但是,如果仅注释字段,则检索到的列表使用数据库自​​然排序。

问题
注释只有字段做什么吗?如果没有,为什么只能注释字段?

1 个答案:

答案 0 :(得分:3)

放置注释的位置无关紧要。根据您的注释方式,应该有三种情况:

@OneToMany(...)
private List<Entry> elements;

应该意味着在没有任何特定顺序的情况下检索列表(您的SQL数据库可能会以某种有序的形式返回它们,但是根据标准,如果没有,则完全合法)。

@OrderBy
@OneToMany(...)
private List<Entry> elements;

应检索按主键排序的条目,

@OrderBy("fieldname asc")
@OneToMany(...)
private List<Entry> elements;

应该按字母顺序检索按字节名排序的条目,对应于以下JPQL语句:

"select e from Entry e ordered by fieldname asc"