MongoDB和mysqlDB在grails中一起使用会导致我的项目出现问题
我有两个域类 一个是User.groovy,它存储在mongodb中MongoDB和mysqlDB在grails中一起使用会导致我的项目出现问题,grails,gorm,Grails,Gorm,我有两个域类 一个是User.groovy,它存储在mongodb中 class User { String firstName String lastName Address address static mapWith = "mongo" static mapping = {version false } static constraints = { address nullable: true } }
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,那么它通常存储在
用户
对象(例如上面的示例)中的一个字段中,该字段可能类似于地址_id
。如果您只请求userInstance.address.id,那么GORM足够聪明,除非确实需要,否则不会获取整个地址记录(惰性)。为什么要这样做?将“属于”的对象放在同一数据存储中。否则,你将不得不面对各种各样的冲突。