Grails: привязка данных - PullRequest
       10

Grails: привязка данных

0 голосов
/ 27 апреля 2010

Я пытаюсь создать некоторые доменные объекты из XML.

class A {
  String name
}
class B {
  A a
  int something
}

Сначала я создал экземпляр A и покраснел. при создании B сначала сопоставьте доступные атрибуты.

def b = new B(xml.attributes())

это правильно отобразит «что-то», но не объект типа А. Итак, я извлекаю экземпляр A и добавляю как

 b.a = A.findByA("id of a")

Я мог видеть, что объект b создается (оба поля заполнены) в отладчике, но он не сохраняется при сохранении (flush: true).

  1. Что не так в приведенном выше assignemt, или вместо него следует использовать идентификатор (b.a.id = ..)
  2. Как я могу увидеть, что идет не так в файле журнала? какая трассировка должна быть включена. Я включил там в конфигурационном файле

trace 'org.hibernate.SQL', 'org.hibernate.type' (который дает трассировку sql для вставки, выбора и т. Д. Но не для описанного выше сценария, возможно, потому что он не достигает спящего режима).

Любой указатель, высоко ценится .. спасибо.

Ответы [ 3 ]

1 голос
/ 28 апреля 2010

Могу предположить, что ваш save () не проходит проверку. Вы можете добавить save (failOnError: true), чтобы выдать исключение при сбое проверки, или добавить следующий код для вывода каждой ошибки:

b.errors.allErrors.each {
    println it
}
0 голосов
/ 28 апреля 2010

Для создания ассоциации вы должны передать объект A

new B(a:A.get(id))

или

B b = new B()
b.a = A.get(id)

Где идентификатор должен быть целым или длинным

Либо мне не хватает некоторого контекста, но у класса A нет метода findByA. Для класса А. такого атрибута A не существует. Рекомендуем использовать метод get для строгих выводов.

0 голосов
/ 28 апреля 2010

С помощью отладочной подсказки от Rich я смог сузить проблему ... пришлось переименовать атрибут, чтобы предотвратить автоматическое сопоставление. Смотрите похожую проблему и ответ на http://grails.1312388.n4.nabble.com/domain-controller-and-Failed-to-convert-property-value-of-type-problem-td1357947.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...