我有两个领域类

一个是 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 足够聪明不会去获取整个地址记录(惰性),除非确实需要。


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!