我有两个领域类
一个是 User.groovy,它存储在 mongodb 中
class User {
String firstName
String lastName
Address address
static mapWith = "mongo"
static mapping = {version false
}
static constraints = {
address nullable: true
}
}
第二个是存储mysqlDB的地址
class Address {
String address1
String address2
String city
String state
String country
static constraints = {
}
}
当我在逻辑下运行时
def userInstance=User.get(1l)
println "--->>"+userInstance?.address?.address1
加载 [class com.imomentous.Address] 类型的关联 [1] 时出错。关联实例不再存在。
当我在逻辑以下运行时
def userInstance=User.get(1l)
println "--->>"+userInstance?.address?.id
它给了我 -->1
这背后的原因是什么?
请您参考如下方法:
跨映射的关联可能不会起作用。 id 起作用的原因是因为 grails 在关联的惰性对象上做了一个偷偷摸摸的技巧以防止开销。如果只需要一个关联的 ID,它通常存储在 User
对象(对于上面的示例)中的一个字段中,该字段可能类似于 address_id
。如果您只请求 userInstance.address.id,那么 GORM 足够聪明不会去获取整个地址记录(惰性),除非确实需要。