【发布时间】:2021-05-12 12:23:05
【问题描述】:
我正在尝试在 Kotlin 上使用 Exposed 编写 CRUD 服务。我有一张包含多对一参考的表格。当我尝试插入时,我得到了
java.lang.IllegalStateException: 上下文中没有事务。
这是表格和实体
object Contacts : IntIdTable("ph_contact"){
var firstName = varchar("first_name",255)
var lastName = varchar("last_name",255)
var phone = varchar("phone",4096)
var email = varchar("email",4096)
var user = reference("user",Users)
}
class ContactEntity (id: EntityID<Int>): IntEntity(id){
companion object : IntEntityClass<ContactEntity>(Contacts)
var firstName by Contacts.firstName
var lastName by Contacts.lastName
var phone by Contacts.phone
var email by Contacts.email
var user by UserEntity referencedOn Contacts.user
fun toContact() = Contact(id.value,user.id.value,firstName,lastName,phone,email)
}
data class Contact(
val id: Int,
val userId: Int,
val firstName: String,
val lastName: String,
val phone: String,
val email: String
)
这里是创建的服务方法
fun createContact(contact: Contact) = transaction {
ContactEntity.new {
this.firstName=contact.firstName
this.lastName=contact.lastName
this.phone=contact.phone
this.email=contact.email
this.user= UserEntity[contact.userId]
}
}
保存实体后调用toContact()方法报错
var contact = contactEntity.toContact()
创建此类实体的正确方法是什么?
【问题讨论】:
标签: kotlin kotlin-exposed