我有一个域类,其中包含许多其他域类。我想要任何一个孩子而不关心哪个。实施例
class MyDomainClass {
static hasMany = [thingies:OtherDomainClass]
}
我可以用愚蠢的方式做到这一点:
def findOne
myInstance.thingies.each{
findOne=it
}
但是有更好的方式:
def findOne = myInstance.thingies.grabTheMostConvenientOne()
答案 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 }