如何防止Grails3服务方法中的记录更新为get

时间:2016-07-28 20:01:49

标签: grails version grails-3.0 grails-services grails-3.0.9

我的应用程序中有很少的域类,例如Customer和Tenant。客户域实例具有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中获取一种Customer类型。由于它在多种方法中使用,因此我创建了一个服务方法'getClerkCustomer'来获取Customer。一旦用户登录,tenantId值就存储在会话中。因此,OrderController中的tenantId值从session获取并传递给'getClerkCustomer'

Customer getClerkCustomer(Long tenantId) {

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

    return (customer)
}

当执行'getClerkCustomer'时,它会根据type和tenantId重新调整Customer。在获取客户记录的同时,它甚至更新了该tenantId的租户记录(版本值递增)。我不知道为什么当我们获取客户记录时,租户记录版本会增加。 Grails有没有以名义更新记录?

任何人都可以让我知道为什么租客会更新以获取客户,我该如何避免?

注意:我们也会遇到其他域实例的此问题。更新一次实例在不同实例上增加版本。以上是一个这样的场景。

Version of Grails is 3.0.9
Datbase is postgres

0 个答案:

没有答案