Я разрабатываю приложение, которое запрашивает данные из файла XML и создает несколько объектов с этими данными.
class Search {String artist}
class Performance {static belongsTo = [events:Event, artists:Artist]}
class Location {static belongsTo = [events:Event]}
class Event {static hasMany = [performances:Performance]}
class Artist {static hasMany = [performances:Performance]}
Это доменные классы (для простоты показаны только отношения).
Затем я хочу создать экземпляры этих объектов, когда пользователь вставляет нового исполнителя в SearchController. Я попытался сделать это с помощью следующего кода для закрытия сохранения в SearchController, но кажется, что он не работает. ResultList - это карта со значениями, запрашиваемыми из файла XML.
def save = {
def searchInstance = new Search(params)
def resultsList = searchService.lastFmVenues(params.artist)
resultsList.each{
def performanceInstance = new Performance()
def locationInstance = new Location(venue:it.venue, street:it.street, city:it.city, postcode:it.postalcode, country:it.country, lat:it.lat, lng:it.lng)
def artistInstance = new Artist(name:params.artist).addToPerformances(performanceInstance)
def eventInstance = new Event(eventId:it.eventID, title:it.eventTitle, date:it.date, location:locationInstance)
if (searchInstance.save(flush:true) && eventInstance.save(flush: true) && artistInstance.save(flush: true) && locationInstance.save(flush: true) && performanceInstance.save(flush:true)) {
flash.message = "${message(code: 'default.created.message', args: [message(code: 'search.label', default: 'Search'), searchInstance.id])}"
}
else {
render(view: "create", model: [searchInstance: searchInstance])
}
}
redirect(action: "show", id: searchInstance.id)
}
Есть идеи?
Спасибо.