Sempre que tento criar e inserir um novo usuário na tabela Usuários (com o User.new
método DAO ou o Users.insert
método ), um campo de enumeração accountstatus que é descrito como não nulo, com um valor padrão, faz com que a inserção falhe a partir de null value in column "accountstatus" violates not-null constraint
.
Aqui está o código para a definição da tabela e o DAO do usuário:
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
}
Aqui está o código que gera a exceção:
// ...
transaction {
User.new {
email = email /* logic omitted */
role = role /* logic omitted */
}
}
Esse problema foi discutido no GitHub .
Pergunta
Responder
Resumo
databaseGenerated().withDefinition()
parece ser o que você está procurando.