试图弄清楚是否有一种方法可以以与连接到 Oracle 数据库时类似的方式关联这两个域对象。
gradle.properties
grailsVersion=3.2.9
gradleWrapperVersion=2.9
gormVersion=6.1.3.RELEASE
构建.gradle
compile "org.grails.plugins:mongodb:6.1.3"
compile "org.mongodb:mongodb-driver:3.4.2"
域对象:
class Store {
Long id
// other properties
Long sellerId
}
class Seller {
Long id
// other properties
}
我想做这样的事情:
class Store {
Long id
// other properties
Long sellerId
Seller seller
Seller getSeller {
Seller.findById(this.sellerId)
}
}
在上面的例子中,只有 SellerId 被持久化到 Mongo,因为它没有被标记为embedded
。如果我在 grails 代码中引用它,这将非常有用 - 为我在store.seller
. 但是,如果我store
从控制器返回 a ,store.seller
则不会完全通过。store 的响应 JSON 如下所示(注意卖家只有 id 属性):
{
id: 1,
// other properties
seller: {
id: 22
}
}
我也尝试过这样的事情,但 afterLoad 永远不会被击中:
class Store {
Long id
// other properties
Long sellerId
Seller seller
def afterLoad() {
seller = Seller.findById(this.sellerId)
}
}
有没有更好的方法来做到这一点?