这是一个简单的情况,但由于某种原因orderBy
对我来说还没有成功。
我有一个非常简单的模型类;
case class Sale(price: Int, name: String) {
@Id
var id: Long = 0
@Formats.DateTime(pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSZ")
var saleDate: DateTime = new DateTime()
}
和伴侣对象;
object Sale {
def find = new Finder[String, Sale](classOf[String], classOf[Sale])
}
然后我尝试获取所有销售条目的列表,并使用saleDate
值进行排序;
Sale.find
.where
... // some conditions
.orderBy("saleDate desc")
.findMap
对我来说,它看起来非常简单明了,但似乎无法奏效。有谁知道原因可能是什么?
答案 0 :(得分:2)
问题有点奇怪,我找到了解决方案。事实证明,当您执行.findMap
时,生成的map
的密钥是找到的条目的id's
,ebean/scala
决定按顺序排列密钥(在我的case,ascending),完全忽略找到的元素的预期顺序。因此,要解决此问题,我需要做的就是将.findMap
替换为.findList
。
这确实为我们带来了一个有趣的可能性 - 安排回复而无需进行昂贵的orderBy
;只需将条目提取到map
,其中键是排序参数。我目前正在使用这种方法,它完美无缺。事实上它很有效率。