我的应用程序中有很少的域类,例如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