我试图从数据库中检索元素的有序列表。据我了解,@orderBy注释应该足够了。
可以注释两个地方:
代表集合的字段
@OrderBy
@OneToMany(cascade = CascadeType.ALL, mappedBy = Entry.REPORT_PROP)
private List<Entry> elements
吸气剂
@OrderBy
public List<Entry> getElements()
问题介绍
如果对field和getter都进行了注释,则检索列表的顺序正确。但是,如果仅注释字段,则检索到的列表使用数据库自然顺序。
问题
仅注释字段有什么作用吗?如果没有,为什么只能注释字段呢?
最佳答案
放置注释的位置无关紧要。根据您的注释方式,应有以下三种情况:
@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"
关于java - 订购目的是在托运领域吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9328659/