Как предотвратить обновление записи в сервисном методе Grails3 для получения

В нашем приложении есть несколько классов доменов, таких как Клиент и Арендатор. Экземпляр домена клиента имеет ссылку на tenantId, но нет связи с классом домена Tenant.

@ToString(includeNames = true, includeFields = true, excludes = 'dateCreated,lastUpdated,metaClass')
@EqualsAndHashCode
class Customer {

    Integer id
    Integer tenantId
    Long version
    String type
    Date dateCreated
    Date lastUpdated

    static mapping = {
        table "customer"
        id column: "customerid", generator:'native', params:[sequence:'customer_customerid_seq']
        tenantId column:"tenantid"
        version column: "version"
        dateCreated column:"datecreated"
        lastUpdated column:"lastupdated"
    }
}

@ToString(includeNames = true, includeFields = true, excludes = 'dateCreated,lastUpdated,metaClass')
@EqualsAndHashCode
class Tenant {

    Long id
    String name
    Long version

    static mapping = {
        table "tenant"
        id column: "tenantid"
    }
}

Мы пытаемся получить тип клиента в OrderController. Так как он используется в нескольких методах, я создал сервисный метод 'getClerkCustomer' для выборки Customer. Значение tenantId сохраняется в сеансе после входа пользователя в систему. Таким образом, значение tenantId в OrderController выбирается из сеанса и передается в 'getClerkCustomer'

Customer getClerkCustomer(Long tenantId) {

    Customer customer = Customer.findByTypeAndTenantId(CUSTOMER_TYPE_CLERK, Math.toIntExact(tenantId))

    return (customer)
}

Когда выполняется getClerkCustomer, он запрашивает Customer на основе типа и tenantId. Наряду с извлечением записи о клиенте она даже обновляет запись об арендаторе для этого tenantId (значение версии увеличивается). Я не уверен, почему версия записи об арендаторе увеличивается, когда мы получаем запись о клиенте. Есть ли у Grails какое-либо правило обновлять запись по имени?

Может кто-нибудь сообщить мне, почему Арендатор обновляется для получения от Клиента и как мне этого избежать?

Примечание. Эта проблема встречается и с другими экземплярами домена. Обновление одного экземпляра увеличивает версию на другом экземпляре. Выше один такой сценарий.

Version of Grails is 3.0.9
Datbase is postgres

0 ответов

Другие вопросы по тегам