具有动态参数的Gorm finder(第2部分)?

时间:2014-07-27 22:46:51

标签: grails groovy

我有以下域类:

class AccountRecord {
     List owners // owner of this account
}

class IndividualRecord {
     String uniqueId
     String secondaryId
     List accounts // accounts owned by this individual
}

owners List类中的AccountRecord通过存储包含每个所有者的uniqueId和secondaryId对的地图来存储该帐户的所有所有者。因此,所有者列表可能如下所示:

[
[uniqueId: 1, secondaryId 2] // owner 1 
[uniqueId: 2, secondaryId 3] // owner 2
]

让我们说我想使用GORM查找其所有者列表包含地图的所有AccountRecord,以便地图包含给定的IndividualRecord的uniqueId和secondaryId。基本上,给定个人,查找个人拥有的所有帐户。目前我正在这样做,但它不起作用(由于某些原因,它也归还不归个人所有):

def accountsOwnedByUser = AccountRecord.where {[uniqueId: someOwner.uniqueId, secondaryId: someOwner.secondaryId] in owners}.list()

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

如果您没有使用标准gorm M:N关系的特殊原因,您可以像这样实施:

class AccountRecord {
  static hasMany = [owners: IndividualRecord]
}

class IndividualRecord {

  String uniqueId
  String secundaryId

  static belongsTo = AccountRecord
  static hasMany = [accounts: AccountRecord]
}
  

基本上,给定个人,找到个人拥有的所有帐户

这可以通过使用关联来轻松实现:myIndividual.accounts