database - Grails,在具有复合 id 的域类上使用 read()

标签 database grails groovy

我有一个不错的小域类,它由三个整数组成,但没有主键(由于数据库设计不佳......重写是不可能的):

class Domain implements Serializable {

   Integer foo
   Integer bar
   Integer flag

    static mapping = {
        table 'domain'
        version false

        id  composite: ['foo', 'bar']
        foo column: 'foo_nbr'
        flag    column: 'value_I_want_flag'
        bar column: 'bar_nbr'   
    }
}

我希望能够使用 foo 和 bar 的复合 id 通过读取函数访问该标志

比如

Integer yayFlag = Domain.read(foo, bar).flag

这有最佳实践吗?

最佳答案

根据docs on this ,您应该能够通过 get() 语法使用原型(prototype)对象进行引用:

def d = Domain.get(new Domain(foo: 23, bar: 999))

请注意,它还建议实现 hashCode()equals()(使用 id 组件字段),并使类可序列化

如果 read() 是一个要求,您可以尝试相同的操作,但我还没有搜索源代码以了解这是否有效(get() don'的引用文档实际上并没有明确表明您可以执行上述操作,因此在 read() 引用文档中没有说这不是结论性的)。我已经离开 Grails 一段时间了,但您也可以在 get() 之后尝试 discard() 以避免刷新时数据库写入。

关于database - Grails,在具有复合 id 的域类上使用 read(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13749063/

相关文章:

android - 如何使用Gradle任务从命令行获取参数?

database - TeraData 查询以从表中获取最小值和最大值

database - Flutter-> UploadTask方法OnComplete不存在

java - 在 Tomcat 上安装两个 grails 应用程序导致异常

validation - 获取失败约束的名称

java - 在没有 maven 的情况下将 spock 添加到 eclipse : General error during semantic analysis

grails - 如何在Grails中实现基于权限的访问控制?

php - 图像不使用路径从数据库获取

sql - 从连接的表中获取数据

grails - 从文件引导Grails