Scala + Ebean:orderBy不工作?

时间:2014-10-18 12:22:44

标签: scala playframework sql-order-by ebean

这是一个简单的情况,但由于某种原因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

对我来说,它看起来非常简单明了,但似乎无法奏效。有谁知道原因可能是什么?

1 个答案:

答案 0 :(得分:2)

问题有点奇怪,我找到了解决方案。事实证明,当您执行.findMap时,生成的map的密钥是找到的条目的id'sebean/scala决定按顺序排列密钥(在我的case,ascending),完全忽略找到的元素的预期顺序。因此,要解决此问题,我需要做的就是将.findMap替换为.findList

这确实为我们带来了一个有趣的可能性 - 安排回复而无需进行昂贵的orderBy;只需将条目提取到map,其中键是排序参数。我目前正在使用这种方法,它完美无缺。事实上它很有效率。