Grails在hasMany中获得任何孩子

时间:2011-06-27 21:44:05

标签: grails has-many gorm

我有一个域类,其中包含许多其他域类。我想要任何一个孩子而不关心哪个。实施例

class MyDomainClass {
  static hasMany = [thingies:OtherDomainClass]
}

我可以用愚蠢的方式做到这一点:

def findOne
myInstance.thingies.each{
  findOne=it
}

但是有更好的方式:

def findOne = myInstance.thingies.grabTheMostConvenientOne()

1 个答案:

答案 0 :(得分:9)

thingies是一个集合,因此您可以使用Collection中的所有内容。

您可以这样做的一个简单方法是:

def one = myInstance.thingies.asList().first()

但是,您可能希望确保集合实际上首先包含一些元素。如果列表为空,文档没有明确说first()抛出IndexOutOfBoundsException,但我觉得它仍然可能。如果是这种情况,您可能需要:

def one = myInstance.thingies.size() > 0 ? myInstance.thingies.asList().first() : null

或者,如果您希望以牺牲一些可读性为代之以超简洁,则可以使用此方法(courtesy John Wagenleitner)

def one = myInstance.thingies?.find { true }