在 kotlin 公开模型中,排序如何与限制一起工作?

Иль*_*чев 3 kotlin kotlin-exposed

我有以下代码片段:

UserDataModel
                .find {
                    UserDataTable.type eq type and (
                            UserDataTable.userId eq userId
                            )
                }
                .limit(count)
                .sortedByDescending { it.timestamp }
Run Code Online (Sandbox Code Playgroud)

sortedByDescending是 kotlin 集合 API 的一部分。我主要关心的是:如果 select 查询看起来像这样并且不包含 ORDER BY 子句,那么暴露的 lib 如何从表中返回顶部(根据时间戳)count行?

SELECT USERDATA.ID, USERDATA.USER_ID, USERDATA.TYPE,
USERDATA.PAYLOAD, USERDATA."TIMESTAMP"
FROM USERDATA 
WHERE USERDATA.TYPE = 'testType'
and USERDATA.USER_ID = 'mockUser'
LIMIT 4
Run Code Online (Sandbox Code Playgroud)

对于相同的数据,有时或以某种方式返回的结果是否可能不同?

真的在这里挣扎。先感谢您。

noi*_*ale 6

您正在执行查询对结果进行排序。

您需要使用文档中orderBy描述的方法

UserDataModel
  .find {
    UserDataTable.type eq type and (UserDataTable.userId eq userId)
  }
  .limit(count)
  .orderBy(UserDataTable.timestamp to SortOrder.DESC)
Run Code Online (Sandbox Code Playgroud)

  • `.orderBy(UserDataTable.timestamp to false)` 被弃用,取而代之的是 `.orderBy(UserDataTable.timestamp to SortOrder.DESC)`。我会更新维基页面。 (2认同)