2011-06-27 4 views
6

私は、他の多くのドメインクラスを持つドメインクラスを持っています。私は子供のいずれかが欲しいし、気にしない。例GrailsはhasManyの子を取得します

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

私は愚かな方法のようにこれを行うことができます。

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

しかし、より良い方法は次のようにあります:あなたはCollectionからすべてを持っているので、

def findOne = myInstance.thingies.grabTheMostConvenientOne() 

答えて

9

thingiesがコレクションでありますあなたの処分で。あなたがこれを行う可能性があります

簡単な方法は次のとおりです。

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 } 
関連する問題