У меня есть класс домена под папкой домена на Grails.Ограничения домена не работают
У меня есть простой пользовательский объект с атрибутом имени String, и у меня возникают проблемы с некоторыми ограничениями.
class User {
transient springSecurityService
String username
String password
boolean enabled = true
boolean accountExpired
boolean accountLocked
boolean passwordExpired
static transients = ['springSecurityService']
static constraints = {
username blank: false, unique: true, email: true, size: 4..20
password blank: false
}
static mapping = {
password column: '`password`'
}
Set<Role> getAuthorities() {
UserRole.findAllByUser(this).collect {
it.role
}
}
def beforeInsert() {
encodePassword()
}
def beforeUpdate() {
if (isDirty('password')) {
encodePassword()
}
}
protected void encodePassword() {
password = springSecurityService?.passwordEncoder ? springSecurityService.encodePassword(password) : password
}
}
Ограничения, как уникальный, адрес электронной почты, и другие, кажется, правильно работать, но некоторые другие, как длина, размер, MAXLENGTH, макс, мин, и валидатор (под заказ), кажется, просто игнорируются (!!), поэтому я способный сохранять объекты базы данных, которые нарушают эти ограничения.
Любая идея, в чем причина?
РЕДАКТИРОВАТЬ: Эти проблемы находятся в поле имени пользователя ... без привязки пароля.
EDIT2: Я понял, что проблема не возникает в режиме производства с базой данных MySQL. Это происходит во время тестирования интеграции (GroovyTestCase) с использованием H2 (по крайней мере)
EDIT3: Добавить полный код объекта BTW - это только пример, так как я тестировал не только размер, но и длину, макс, мин и другие ,
Не ответ на вопрос, но максимальная длина 20 кажется довольно короткой для того, что должно быть адресом электронной почты. –