0

试图弄清楚是否有一种方法可以以与连接到 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)
  }
}

有没有更好的方法来做到这一点?

4

0 回答 0