2013-03-19 39 views
0

我有一個客戶端列表,每個客戶端都有一個或多個地點。Grails創建多個價值地圖

這些是場地有客戶端ID

兩個獨立的域類我想創建一個多值映射裏面會有客戶名作爲關鍵字和地點名稱作爲值

例如:

def dataMap=["Client1":["Venue1","Venue2","Venue3"],"Client2":["Venue1","Venue2"]] 

域類:客戶

class Client { 
    String name; 
    static hasMany = [venues: Venue]; 
} 

域類:地點

class Venue { 
    String name; 
    String addressLine1; 
    String addressLine2; 
    String City 

    static belongsTo = [client: Client]; 
} 

回答

0

你有什麼嘗試過和你在哪裏卡住了?

下面是一個簡單的方法:

def dataMap = [:] 
Client.findAllWhere(/*yourCondition*/).each { client -> 
    dataMap[client.name] = client.venues.name 
} 
2

同爲艾俄羅斯寫道,與標準的Groovy方法collectEntries()

def dataMap = Client.findAllWhere(/*yourCondition*/).collectEntries { client -> 
    [(client.name): client.venues.name] 
}