使用Grails 3.2.5,休眠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”中定义列“comment_text_id”。情况并非如此,该字段也不必存在。
类似地,在另一种情况下,我定义了一个复合域类(与实际域类在同一文件中定义的类)。在这种情况下,我也会收到有关缺少的ID的错误消息:
class A {
B b
}
class B {
String someField
}
在这种情况下,我收到一条错误消息,指出字段b_id不在表'A'中。但是-它应该是嵌入式组合,不应该存在。
如果相关的话,我正在Intellij中构建。
最佳答案
使用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'
}
}
}
}
关于grails - Grails 3域类组成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44553391/