>
是否有任何@transactional操作来执行查询?
object UserRepository {
fun getAll() : List<User> {
return User.selectAll().map { User } // how to add it in a transaction ? // Is it the right way to map query to a Class ?
}
fun get(id: Int) : User? {
return User.select { User.id eq id id}.map { User.it } // Mapping Not working
}
我的解决方案是将值提取到HashMap中,并将pk作为值
fun getRaw(): List<HashMap<String, Any?>> {
return transaction {
val list = Users.selectAll().toList()
list.map { data ->
HashMap<String, Any?>().also { map ->
Users.columns.forEach {
if (data[it] is EntityID<*>) {
map[it.name] = (data[it] as EntityID<*>).value
} else {
map[it.name] = data[it]
}
}
}
}
}
}
映射应自动完成。请参阅文档:
DAO文档
DSL文档
交易记录
表格:
object Users : IntIdTable() {
val name = varchar("name", 50)
}
实体:
class User(id: EntityID<Int>) : IntEntity(id) {
companion object : IntEntityClass<User>(Users)
var name by Users.name
}
用法:
fun getAllUsers(): List<User> {
Database.connect(/* ... */)
return transaction {
User.all().toList()
}
}
我知道现在已经晚了,但对于其他有这个问题的人来说:如果您使用的是DSL,那么您可以在数据类中创建一个用于映射的函数。例如:
data class User(
val id: Int,
val username: String,
val password: String
) {
companion object {
fun fromRow(resultRow: ResultRow) = User(
id = resultRow[UserTable.id].value,
username= resultRow[UserTable.username],
password = resultRow[UserTable.password]
)
}
}
在您的事务块中:
transaction {
user = UserTable.select { UserTable.id eq userId }.map { User.fromRow(it) }
}
暴露0.27.1是否能够翻译以下SQL语句? 下面是我尝试的内容,但不幸的是,子查询独立于查询的其余部分工作。 此外,如果可能的话,那么如何使用别名从ResultRow获取结果?在这个示例之后,解决方案似乎是将整个子查询存储在单个变量中,并使用一个alias()方法调用,但这看起来很难看。有没有更好的方法?
为了描述Gradle构建脚本,我们可以通过< code>build.gradle.kts文件使用Kotlin。在< code>dependencies和build 部分全局定义要使用的Kotlin版本是一个常见的问题(在给定的情况下使用不同的版本是相当罕见的)。 请考虑以下代码 (Gradle 4.3.1): 如您所见,kotlin(在本例中为1.2.30)定义了两次:和,它们通常没有区别。由于D
我正在尝试使用Exposed on Kotlin编写CRUD服务。我有一张多对一的参考表。当我尝试插入时,我得到 Java语言lang.IllegalStateException:上下文中没有事务。 这是表和实体 下面是用于创建的服务方法 保存实体后调用toContact()方法时引发错误 var contact=contactEntity。toContact() 创建此类实体的正确方法是什么?
我试图用OkHttp和Cucumber在静态编程语言中设置一个Spring启动项目,并且在运行Cucumber任务时遇到以下错误。如何修复? 还有build gradle kts片段 我看到了这个错误https://github.com/square/okio/issues/647看起来可能是它,并修复了这个build.gradle,我如何将其翻译为kotlinbuild.gradle.kts?
我想从< code>local.properties文件中检索如下所示的密钥: 并通过gradle静态编程语言DSL将此值保存在我的中。稍后可以从我的项目中访问该字段。
如图所示,https://stackoverflow.com/a/16639438/8949356,在Java中,当声明的类是公共类时,可以重写其函数 但是我想知道如何用静态编程语言编写完全相同的代码,我已经尝试了很多,但没有找到任何关于这个主题的东西。我可以在Java中去做这件事,但我的其余代码是用静态编程语言编写的,而且我不能一直带着这种怀疑;静态编程语言对我来说是一个很好的工具,我想学习它。