问题标签 [kotlin-exposed]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1397 浏览

kotlin-exposed - SELECT EXISTS(SELECT 1 FROM table WHERE...) 在 Exposed

是否可以在 Exposed 中执行类似的操作来检查行的存在? SELECT EXISTS(SELECT 1 FROM table WHERE...)

0 投票
1 回答
2495 浏览

kotlin-exposed - 如何在 Kotlin Exposed 中应用“NOW()”作为日期时间列值?

在 PostgreSQL 中,我有一个包含timestamp类型列的表。我希望这映射到Kotlin Exposed 数据类型datetime文档不清楚,但这是另一个问题)。

我现在的问题是:如何使用 SQL 文字更新/插入值NOW(),以便数据库服务器将时间戳设置为当前时间戳?

我目前正在尝试在 Exposed DSL API 中应用它,如下所示:

我找到了一种在 Exposed 源代码中声明自定义表达式的方法,如下所示:

但是如何在我的更新/插入语句中应用它?

我发现的 Kotlin 单元测试:

  • 使用 Kotlin 方面的DateTime.now()(不是我想要的),或者
  • 使用现在的列默认值,然后在插入中省略列值。这是我找到文字NOW()表达的地方。但是,我想在该列上保持我的默认值为 NULL。

我没有找到在 DSL 插入/更新中应用自定义表达式的单元测试,但也许我遗漏了一些东西。

0 投票
1 回答
166 浏览

kotlin - 引用属性时,我可以获得 TableView 列以使用 Kotlin Exposed 事务吗?

使用 TornadoFX 时,TableView 列的建立方式如下:

这通常很好,但在我的情况下,我使用的是 Kotlin Exposed 实体,该实体使用对另一个实体的引用。发生这种情况时,如果您想使用该引用,则必须将其包围在事务中。

例子:

如果您不在事务中包装这样的调用,则会引发错误。似乎没有一种明显的方法来覆盖列访问属性的方式,所以我想知道它是否存在。

现在,我已经尝试将我的实体包装在另一个类中,该类会预先完成所有必要的事务,但是当需要映射的实体数量达到数千时,它会导致我的程序基本上进入停滞状态. 如果需要,我可以回到以前的状态,即没有参考,而只是另一个实体的普通旧 ID 号。然后,该列的单元格格式将尝试将公司与之前抓取的列表中的所有公司进行匹配。虽然我不太喜欢那个解决方案,它看起来更丑也不优雅,但它比映射实体快得多。我想要实现的目标也有可能导致其自身的放缓。我只是想知道这是否可能,所以我至少可以看到它有多快。

0 投票
1 回答
3941 浏览

kotlin-exposed - Kotlin Exposed 批量插入未按记录工作

我正在尝试使用 Kotlin Exposed 将记录批量插入到 SQL 表中。我已经根据 Exposed 文档设置了代码,但是,正在执行的 SQL 语句是单独的插入语句而不是 1 个批量插入语句。

位于此处的文档:https ://github.com/JetBrains/Exposed/wiki/DSL 在批量插入上有以下内容:

批量插入

批量插入允许在一个 sql 语句中将实体列表映射到数据库原始数据。它比一个一个插入更有效,因为它只启动一个语句。这是一个例子:

我的代码如下:

我希望看到打印出来的是 1 个批处理插入语句,它遵循以下语法

但它使用以下语法打印 3 个单独的插入语句

由于这似乎是记录在案的正确批量插入方法,我在这里做错了什么?

0 投票
2 回答
3979 浏览

sql - Kotlin 暴露 - 没有标识列的表的实体

我可以在 Kotlin 公开库上找到的所有材料都假定该表具有一个主要的标识列,因此在大多数示例中显示的实体都继承了IntEntity抽象类。例如:

这对应于这个表定义:

问题是,我的表实际上没有标识列。我知道没有主键的表的所有负面影响,但不幸的是我只有对该表的读取权限。我无法获得对该表的写入权限来添加主键。

在公开库的 wiki 中,它提到对象表定义可以继承TableIntIdTable不是IntEntity.

我的问题:当表没有 id 列时,我的实体应该继承(而不是)什么。IntEntity

0 投票
1 回答
2668 浏览

kotlin - Kotlin Exposed - 基于子查询计数进行选择

在我的数据模型中,挑战和它的白名单项目之间存在非常简单的一对多关系。

我正在尝试选择一个按白名单过滤的挑战。基本上,挑战选择标准是当挑战本身在白名单中没有任何条目或白名单按名称匹配时。

这可以通过非常简单的 SQL 查询来实现:

我无法将其翻译为Exposed

用户名检查工作正常,但没有ChallengeTable.innerJoin(ChallengeWhitelistTable).selectAll().count() eq 0)被限定为有效表达式(不会编译)。

请注意,映射非常简单:

任何帮助,将不胜感激。

0 投票
1 回答
541 浏览

kotlin - Exposed 中的 default 和 clientDefault 函数有什么不同?

我在 Kotlin 项目中使用 Exposed 库。在我的表声明中,我有一个这样的列:

val updatedDate = datetime("updated_dt").clientDefault { DateTime.now() }

如果我默认替换 clientDefault 函数有什么不同,如下所示:

val updatedDate = datetime("updated_dt").default(DateTime.now())

我看过这两个函数的源代码,但还是不知道。

clientDefault功能:

default功能:

0 投票
1 回答
880 浏览

sql-server - 如何比较 Kotlin Exposed 的月/日?

我正在尝试查询 SQL Server 中某个时间范围内但丢弃年份的事件,因为我正在寻找年度事件。我正在尝试通过将月份和月份天数与其整数等价物进行比较来构建查询,但似乎没有办法。

对于 的列类型Column<DateTime>,您可以与lessEq/进行比较greaterEq。但是,如果我只是想比较月份,则 usingcolumnDate.month()返回一个Expressionand 不是 type Column,并且没有任何lessEq/greaterEq等价物。

另一个问题是甚至没有monthDay扩展功能。幸运的是,这更容易管理,因为它与月份函数相同,只是稍作改动:

我的目标是最终有一个像TableName.dateColumnName.betweenIgnoreYear(startDate, endDate)return an这样的表达式Op<Boolean>。有没有办法做到这一点?

0 投票
0 回答
857 浏览

jetbrains-ide - 如何在 Jetbrain 的 Exposed DSL 方法中加载相关实体

如何使用 DSL 方法在 Jetbrain 的 Exposed 中加载相关实体?

例如: - 我有实体“用户”,现在我想在每次点击选择查询时加载它的“角色”详细信息以及每个用户行。

0 投票
0 回答
176 浏览

sql-server - 尝试使用 Exposed 从 android 连接到 MS SQLSERVER 时发生异常

当我运行应用程序时,会发生以下异常:

E/AndroidRuntime:致命异常:AsyncTask #1 进程:hu.kovax.empmobile,PID:28856 java.lang.RuntimeException:在 android.os.AsyncTask$4.done(AsyncTask.java:399 执行 doInBackground() 时出错) 在 java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:383) ... ... 引起:java.net.SocketException:套接字在 com.android.org.conscrypt.NativeSsl.doHandshake(NativeSsl .java:385) 在 com.android.org.conscrypt.ConscryptFileDescriptorSocket.startHandshake(ConscryptFileDescriptorSocket.java:226) 在 com.microsoft.sqlserver.jdbc.TDSChannel.enableSSL(IOBuffer.java:1802)

SQLSERVER 已启动并处于活动状态。

我找到了可能相关的其他问题的答案,有人建议以某种方式禁用 conscrypt 层: https ://github.com/GoogleCloudPlatform/dataproc-initialization-actions/issues/177

有没有办法在 Exposed 中禁用 conscrypt 层?