2014-12-05 3 views
0
class ContentA{ 
    String name 
    ContentB[] contentBList 
} 

class contentB{ 
    Long typeId 
    String typeName 
} 

И ContentA, и ContentB являются объектами домена, которые будут заполнены в соответствующих вызовах остальным услугам, которые у нас есть.Есть ли другой способ остановить постоянство поля (который также является объектом класса домена) в классе домена Grails, кроме использования ключевого слова transient?

org.hibernate.MappingException: Не удалось определить тип для: [Lcom.classes.ContentB ;, в таблице: table_name, для столбцов: [org.hibernate.mapping.Column (content_b_list)

Мы получаем вышеуказанную ошибку при создании приложения. Когда мы добавляем ContentB в static transients{}, он не отображается в сгенерированной строке json. Мы используем json-вызовы для взаимодействия с сервисом и преобразования объектов домена в строки json . Есть ли другой способ заставить ORM остановить сохранение контента?

Мы даже пытались использовать CustomMarshaller для генерации строки json, которая не сработала.

+0

Вы можете поместить 'contentB' в Sources: Groovy или ваш каталог контроллера и рассматривать его как объект' command'. Если вы аннотируете имя класса с помощью '@ grails.validation.Validateable', вы можете включить« статические ограничения »и т. Д. И использовать его для проверки. См. Http://grails.org/doc/latest/guide/single.html#commandObjects. Я работаю над приложением, которое делает именно это, и сохраняет свои данные в бэкэнд-сервисе через JSON - в моем каталоге «Domain» нет классов. – nickdos

ответ

0

Вы должны определить Ассоциации

class ContentA { 
     String name 
     static hasMany = [contentBList: ContentB] 
} 

GORM oneToMany