Проблема с Граальсом ГОРМ - PullRequest
0 голосов
/ 16 июня 2011

Я разрабатываю приложение, которое запрашивает данные из файла 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)
}

Есть идеи? Спасибо.

1 Ответ

0 голосов
/ 17 июня 2011

Попробуйте сохранить ваши объекты с помощью save(failOnError: true).Это заставит Grails генерировать исключение, если объекты не проверяются.Поведение по умолчанию - просто возвращать false из метода сохранения.

Вы можете сделать failOnError поведением по умолчанию, установив grails.gorm.failOnError=true в вашем Config.groovy, но я бы не рекомендовал его ни для чего, кроме устранения неполадок.

...