2011-06-27 24 views
6

içinde herhangi bir çocuk olsun, başka bir etki alanı sınıfına sahip bir etki alanı sınıfım var. Çocuklardan herhangi birini istiyorum ve kimin umurunda değil. ÖrnekGrails bir hasMany

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

aptal yolu gibi yapabilirsiniz:

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

Ama daha iyi bir yol gibi vardır: Eğer Collection gelen her şey var bu yüzden,

def findOne = myInstance.thingies.grabTheMostConvenientOne() 

cevap

9

thingies bir Koleksiyonu olduğu senin emrinde. Bunu belki

basit yoludur: Ancak

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

, muhtemelen toplama aslında ilk olarak bazı unsurları vardır emin olmak istiyorum. Belgeler, liste boşsa first()'un bir IndexOutOfBoundsException attığını açıkça söylemez, ancak yine de bir his var.

def one = myInstance.thingies?.find { true } 
: Bazı okunabilirliği pahasına, bu yaklaşımı ( courtesy John Wagenleitner) kullanabilirsiniz süper özlü olmak istiyorsanız,

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

Veya: Eğer durum buysa, muhtemelen istiyorum