我试图从数据库中检索有序的元素列表。据我所知,@orderBy注释应该足够了。
可以注释两个地方:
代表集合的字段
@OrderBy
@OneToMany(cascade = CascadeType.ALL, mappedBy = Entry.REPORT_PROP)
private List<Entry> elements
吸气剂
@OrderBy
public List<Entry> getElements()
问题介绍
如果注释了字段和getter,则正确排序检索到的列表。但是,如果仅注释字段,则检索到的列表使用数据库自然排序。
问题
注释只有字段做什么吗?如果没有,为什么只能注释字段?
答案 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"