Может ли GORM глубоко проверять списки доменных объектов? - PullRequest
0 голосов
/ 16 апреля 2020

Итак, я обнаружил ссылки на то, что GORM может по умолчанию DeepValidate доменные классы со свойствами, которые являются другими классами домена. То, что я пока не нашел, это какая-либо ссылка на возможность настроить класс домена так, чтобы он deepValidates свойства, которые являются списками классов домена. Такие как ...

class User {
    ObjectId id
    String firstName
    String lastName
    List<Address> addresses

    static embedded = [ 'addresses' ]
    static mapWith = 'mongo'

    static mapping = {
        version false
        collection 'users'
        writeConcern WriteConcern.ACKNOWLEDGED
    }

    static constraints = {
        firstName blank: false
        lastName blank: false
        addresses minSize: 1
    }
}

class Address {
    String address1
    String address2
    String city
    String state

    static mapWith = 'none'

    static mapping = {
        version false
    }

    static constraints = {
        address1 blank: false
        address2 blank: false
        city blank: false
        state blank: false
    }
}

Так что надуманная пара классов, но должно быть достаточно, чтобы дать идею. Таким образом, верхний класс домена имеет обычные свойства и список других классов домена. Все свойства имеют ограничения. Если я попытаюсь user.save(failOnError: true, flush: true) пользовательский объект, он потерпит неудачу, если произойдет сбой любого из пользовательских ограничений. Но , если у меня есть экземпляр Address для пользователя, у которого есть ошибки ограничения, он все равно позволяет пользователю сохранять. Как будто вызов validate() не является каскадным к элементам. Я подтвердил это, логически вызвав validate() в верхнем элементе домена во время отладки, и он не сообщает о каких-либо ошибках в верхнем домене, связанных с вложенными доменами.

Похоже, это будет очень обычная практика в мире mon go, и я ожидал, что легко найду документацию, показывающую, как настроить домены для глубокой проверки элементов домена в списках. Но пока ничего не нашел.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...