问题标签 [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.
postgresql - 在 WHERE 中进行强制转换查询
我正在学习这个很棒的库,但是虽然简单的查询有效,但我很困惑如何编写库常见问题解答中没有的东西。
例如,
可以写类似的东西
实际上,我在这里有两个问题
column.max()没有任何合适的修饰符,例如function()不接受任何参数。可能,我可以在获取行后在代码中模拟它。
我不知道如何在where进行强制转换或编写任意where条件。
kotlin - 如何避免 kotlin Exposed 上的 N+1 查询问题。(当通过 DAO 的 Reference.id.value 字段获取值时)
我在 Kotlin JVM 项目中使用Exposed作为 O/R 映射器。(版本:0.17.6)
reference
当我从 DAO API(由 Exposed 的方法定义的列)获取外键列的值时,我遇到了 N+1 查询问题。
我以某种方式使用解决方法代码解决了这个问题,但是有人知道正确的解决方案吗?
这是情况。
有两张表(users,user_addresses),一张表(user_addresses 表)在另一张表(user 表)上有一个外键引用。
当我尝试 getList<UserAddressRow>
时,出现 N+1 查询问题。我发现当我调用时Reference.getValue
,SELECT 查询在以下点执行。
https://github.com/JetBrains/Exposed/blob/master/exposed-dao/src/main/kotlin/org/jetbrains/exposed/dao/Entity.kt#L129
测试数据
SQL 查询日志(暴露的调试日志)
如果我使用readValue
而不是user.id
,问题就解决了。我不确定这种解决方法是否正确。请帮我。
postgresql - 如何使用 Kotlin-Exposed 在不是“public”或“dbo”的数据库模式中创建表并在所述表上创建外键?
所以我使用 Kotlin Exposed 在我的postgresql
数据库上创建用于身份验证的表。
该表应该在我的数据库中的专用模式中,称为:authentication
,简单来说。一切都好,我可以使用以下方法定义和创建表:
在不同的模式上创建表是可以的,但是当它定义 时FK
,它会失败,因为它使用表的名称作为 FK 名称的后缀。
所以它类似于fk_authentication.user_fk_type_id
,这是不行的,因为 fk 的名称上不能有 a.
并且我得到一个语法错误。
注意:我将语句更改为与我编写的查询相关:这里作为示例。不要触及语句,而要触及手头的问题,纠正语法。
所以我想到了两种可能性:
- 以另一种方式定义表模式,不知何故?
- 明确定义 FK 名称。
我可以做这些吗?还是我应该以另一种方式解决这个问题?我正在尝试通过查看Table.kt
代码来做到这两点,但没有找到任何我可以使用的东西......有人可以帮助我吗?
谢谢
kotlin - Kotlin 暴露自定义列模块化
我设置了一个基于 Kotlin Exposed DAO 的数据库,并且想清理重复的列名。
例如,假设我有一个看起来像这样的表:
我想在自定义列类型中“包装”重复的类似列。到目前为止,我已经尝试了相当于:
当然,这是行不通的。我觉得我很接近。特别是我觉得我应该能够让自定义列/对象对工作。我已经尝试了各种可能的泛型参数组合RGBObject
,但没有一个可以编译代码。
有什么我想念的想法吗?这甚至可能吗?
sql-server - 是否可以处理无效引用 (SQL Server)?
我非常喜欢能够通过reference
在我的Table
对象以及我referencedOn
的s 中使用来缩短我的代码。但是随着项目的深入,我意识到如果删除了引用的行,我可能必须撤消所有工作并手动重新创建这些流程。referrersOn
Entitie
有什么方法可以保留这些而不冒风险IllegalStateException
(例如能够提供您知道存在的默认外键),还是我必须放弃所有手动参考方法?
这是一个最小的例子:
一旦时间表列表尝试打印员工 UID 与任何员工行都不匹配的行,它将抛出:
kotlin - 我们如何确定我们已经在交易区块中?
我使用带咖啡因缓存的没有 DAO 的暴露。常见的用法是
RowService 首先尝试在缓存中查找行,如果为负,则对数据库运行查询。我怀疑即使没有任何查询的事务块也会有一些开销,如果我大部分时间都缓存命中,我想在 RowService 中移动事务块,它从数据库中解析数据,但是我不想在过程。
如何检查我是否已经在事务块中并重新使用它或打开新的并运行我的 fetch 语句?
gradle - 如何禁用 Exposed Framework 的日志?
我有一个带有 gradle builder 的 kotlin 桌面应用程序。
我为我的 sqlite DB 添加了 Exposed ORM 框架。
然后我注意到这个框架生成了很多我不想在控制台中看到的日志(我只想看到我生成的日志io.github.microutils:kotlin-logging
)。
有没有办法使用 gradle 属性从 Exposed 禁用日志?
kotlin - 从“Where x is not null”的查询结果构建对象时,是否仍然可以在属性“x”上获得“NullPointerException”
我在一个项目中使用暴露,我有一个表,让我们TableX
用两个属性
调用它,property1
并且x
知道它x
是可空的,我添加TableX.x.isNotNull()
到我的查询中,所以我可以忽略空行!
而且我Object1
还有两个属性TableX
:property1
并且x
知道x
在 Object1 中不为空
然后,当我从查询的行中创建 Object1 时,编译器会喋喋不休,x
因为它不应该为空,并且我们从 TableX 接收到一个可为空的 x。
所以我在 Object1 中!!
设置时添加x
了,因为我确信x is null
由于我添加的约束,查询永远不会返回任何行。
但是,我仍然收到KotlinNullPointerException
了一些时间。那么这怎么可能呢?
我想到了MySQL
and之间的一些兼容性问题exposed
!但找不到任何
kotlin - jetbrains 暴露 - 基于可为空的参考列进行选择
我正在尝试根据可为空的引用列从表中选择行。如果你只用一个标准整数列替换引用并保持它可以为空,它处理 eq 就好了。我也尝试用 optReference 替换引用,但这并没有什么不同。
错误是由编译器给出的。
显示 Intellij 给出的错误的基本工作示例。
我希望它运行的等效 sql 是: