使用Grails 3.2.5,hibernate 5.1.2核心。
我有一个遗留数据库,表中有几个clob。为了避免急切的提取,在Grails的早期版本中,我定义了一个只包含那些clob的域类,以便通过(明显的)关联访问它们,然后可以懒惰地获取它们。设置草图:
class Comment {
String someField // eager
CommentText cmntText // lazy
static mapping = {
id column: 'COMMENT_ID', generator:'sequence', params:[sequence:'cmnt_seq']
}
In a separate domain class file:
class CommentText {
String userComment
static mapping = {
table 'COMMENT'
id generator:'assigned'
userComment sqlType:'clob'
}
As noted, clob column 'user_comment' exists in the single table 'COMMENT'.
在3.2.5中,当我这样做时,我得到一个错误,即列' comment_text_id'没有在表格中定义'评论'。这种情况并非如此,该领域也不应该存在。
在类似的说明中,在另一种情况下,我定义了一个复合域类(在与实际域类相同的文件中定义的类)。在这种情况下,我也会收到有关缺少ID的错误:
class A {
B b
}
class B {
String someField
}
在这种情况下,我收到一条错误消息,表示字段b_id不在表格中#A;#39;但是 - 它应该是嵌入式组合,它不应该存在。
如果相关,我会在Intellij内建立。
答案 0 :(得分:1)
使用GORM 6.1,现在可以使用单个域类
import grails.gorm.hibernate.annotation.ManagedEntity
import static grails.gorm.hibernate.mapping.MappingBuilder.*
@ManagedEntity
class Comment {
String someField
String userComment
static constraints = {
}
static final mapping = orm {
id {
generator("sequence")
params(sequence:'cmnt_seq')
}
userComment = property {
lazy(true)
column {
sqlType 'clob'
}
}
}
}