MongoDB和mysqlDB在grails中一起使用会导致我的项目出现问题

时间:2013-09-04 16:07:42

标签: grails gorm

我有两个域类

一个是存储在mongodb中的User.groovy

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

背后的原因是什么?

1 个答案:

答案 0 :(得分:0)

映射之间的关联可能无法正常工作。 id工作的原因是由于一个偷偷摸摸的技巧grails在相关的懒惰对象上做以防止开销。如果所需要的只是一个关联的id,它通常存储在User对象(对于上面的示例)中,可能类似于address_id。如果您只请求userInstance.address.id,那么GORM足够聪明,除非确实需要,否则不会获取整个地址记录(懒惰)。