Grails / GORM сохраняет в неправильном порядке - PullRequest
1 голос
/ 09 февраля 2011

Я использую Grails 1.3.6, и у меня возникают проблемы с получением сохранений для правильного каскадирования.Проблема конкретно с классами, которые имеют два родительских класса.Упрощенная версия того, что я пытаюсь сделать:переходное значение: adhoc.Book.publisher ".

Я пробовал различные способы определения отношений с небольшим успехом.Я пробовал временные сохранения, и это работает, но я вижу, что родительские таблицы обновляются по мере сохранения дочерних данных - то есть, Местоположение, Автор и Издатель обновляются до версии 1. (А также я хотел бы сохранить кодтак просто, как я могу.) Я бы хотел избежать связывания таблиц.

Любой совет с благодарностью получен!

1 Ответ

2 голосов
/ 11 февраля 2011

Хорошо, поэтому ключ в том, что сохранения каскадно переходят от родителей к детям.У вас есть проблема, когда дело доходит до Book, потому что Book является дочерним для издателя и автора.GORM пытается сохранить Location, Location пытается сохранить Author, Author пытается сохранить Book НО , сохранение не удается, поскольку в Book есть временный издатель.

Попробуйте добавить промежуточное сохранение непосредственно перед созданием книги:

def loadData() {
    def l1 = new Location(city: "London")

    def a1 = new Author(name: "Graham Greene")
    l1.addToAuthors(a1)

    def p1 = new Publisher(name: "Some Press")
    l1.addToPublishers(p1)
    l1.save() // add this save

    def b1 = new Book(title: "The Comedians")
    a1.addToBooks(b1)
    p1.addToBooks(b1)

    l1.save()
} 

Я создал локальный проект Grails с добавлением классов вашего домена в это сохранение.Каскадирование работает так, как вы ожидаете.

...