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

class contentB{ 
    Long typeId 
    String typeName 
} 

ContentA和ContentB都是域对象,它们将被填充到我们拥有的宁静服务的相应调用 中。除了使用transient关键字之外,还有其他方法可以阻止Grails域类中的字段(也是一个域类对象)的持久性吗?

org.hibernate.MappingException:无法确定类型:在表[Lcom.classes.ContentB ;,:表名,为列:[org.hibernate.mapping.Column(content_b_list)

构建应用程序时出现上述错误。 当我们将ContentB添加到static transients{}时,它不会呈现在生成的json字符串中。我们使用json调用来与服务交互并将Domain对象转换为json 字符串。有没有其他方法让ORM停止保持contentB?

我们甚至试图使用CustomMarshaller来生成json字符串,但是这种字符串运行得不好。

+0

你可以把'contentB'成来源:Groovy的或你的控制器目录,并把它作为一个'Command'对象。如果使用'@ grails.validation.Validateable'注释类名,则可以包含'static constraints'等,并让控制器使用它进行验证。请参阅http://grails.org/doc/latest/guide/single.html#commandObjects。我正在研究一个完全实现这一点的应用程序,并通过JSON将其数据保存在后端服务中 - 我的“Domain”目录中没有任何类。 – nickdos 2014-12-06 08:13:20

回答

0

您需要定义的关联

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

GORM oneToMany

相关问题