是否有@transactional anotation来执行查询?
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
}
答案 0 :(得分:1)
映射应该自动完成。请参阅文档:
表:
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()
}
}
答案 1 :(得分:0)
我知道已经晚了,但对于其他有此问题的人: 如果使用的是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) }
}