每当我尝试在 Users 表中创建并插入新用户时(使用User.new
DAO 方法或Users.insert
方法),具有默认值且被描述为非空的枚举字段 accountstatus 会导致插入失败null value in column "accountstatus" violates not-null constraint
。
以下是表定义和用户 DAO 的代码:
object Users : UUIDTable() {
val email = varchar("email", 255).uniqueIndex()
val role = enumeration<Role>("role")
val registrationDate =
datetime("registrationDate").default(Clock.System.now().toLocalDateTime(TimeZone.currentSystemDefault()))
val disabledDate = datetime("disabledDate").nullable()
val accountStatus = enumeration<AccountStatus>("accountStatus").default(AccountStatus.ACTIVE)
enum class Role {
PROFESSOR, STUDENT
}
enum class AccountStatus {
ACTIVE, DISABLED
}
}
class User(id: EntityID<UUID>) : UUIDEntity(id), UserData {
companion object : UUIDEntityClass<User>(Users)
override var email by Users.email
override var role by Users.role
override val registrationDate by Users.registrationDate
override var disabledDate by Users.disabledDate
override var accountStatus by Users.accountStatus
val sessions by Session referrersOn Sessions.userId
}
以下是引发异常的代码:
// ...
transaction {
User.new {
email = email /* logic omitted */
role = role /* logic omitted */
}
}