2013-03-19 37 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] 
}