【问题标题】:Scala + Ebean: orderBy not working?Scala + Ebean:orderBy 不工​​作?
【发布时间】:2014-10-18 12:22:43
【问题描述】:

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

对我来说这似乎很简单明了,但它似乎不起作用。有谁知道可能是什么原因?

【问题讨论】:

  • 你有没有机会组建一个小项目来进行测试?
  • 尝试改用orderBy().desc("saleDate")并启用SQL queries logging,这样您就可以看到实际执行了什么。
  • @Nate,Salem 我已经发布了答案。顺便说一句,感谢您对此进行调查。

标签: scala playframework sql-order-by ebean


【解决方案1】:

这个问题有点奇怪,我找到了解决办法。结果是,当您执行.findMap 时,结果map 的键是找到的条目的id'sebean/scala 决定按顺序排列键(在我的情况下,升序),完全忽略找到的元素的预期顺序。所以要解决这个问题,我需要做的就是将.findMap 替换为.findList

这确实为我们带来了一个有趣的可能性——无需花费昂贵的orderBy就可以安排回复;只需将条目提取到map 中,键是排序参数。我目前正在使用这种方法,并且效果很好。事实上,它很有效。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-02-20
    • 2019-04-22
    • 1970-01-01
    • 2020-03-15
    • 1970-01-01
    • 1970-01-01
    • 2014-06-07
    • 1970-01-01
    相关资源
    最近更新 更多