grails - Grails 3域类组成

标签 grails dns composition

使用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/

相关文章:

function - 身份功能在哪里以及为什么有用?

javascript - React TypeScript发送dom构造函数作为参数

session - 如何在 Grails 应用程序中存储/加载用户名?

grails 资源插件适用于本地但不适用于服务器

rest - Grails 3.1.1 Rest-API和Neo4J 2.3基本示例不起作用

apache - 无需在 URL 中附加端口即可访问运行在 8080 端口上的 Tomcat

class - 如何在 UML : associations vs attributes 中对二维阵列板建模

grails - 使用 NonEmptyNavigator.metaClass.invokeMethod { ... } 在字段设置后引入短暂的暂停

windows - 隐藏端口并将http加密为https

python - 如何使 `requests` 使用与 DNS 解析不同的主机名进行 TLS 验证?