grails - 一对多的组合键和Grails中的不同列名

标签 grails mapping gorm one-to-many composite-key

这是一个语法问题。我想要Foo-> Bar(此处简化)之间的一对多关系:

class Foo {
    String fooPK1, fooPK2

    static mapping = {
        id composite: ["fooPK1", "fooPK2"]
    }

    static hasMany = [bars: Bar]
}

class Bar {
    String fooPK1, dumbNameForFooPK2, barPK1, barPK2
    Foo myFoo

    static mapping = {
        id composite: ["barPK1", "barPK2"]
        columns {
            myFoo[:] {
                column name: "FOO_PK_1"
                column name: "?????????????"
            }
        }
    }
}

在这种情况下,显然Foo.fooPK1映射到Bar.fooPK1,但是我需要Foo.fooPK2才能映射到Bar.dumbNameForFooPK2。希望这是有道理的。

我的问题是我不知道语法应该是什么(或者如果有更好的方法可以做到这一点!),从我发现的情况来看,grails文档并没有真正的帮助。

最佳答案

您需要在Bar中重命名外键列声明,对吗?

class Bar {
  Foo myFoo

  static mapping = {
    columns {
      myFoo {
        //declare them in the order of your id composite.
        column name: "foo_pk_1"
        column name: "dumb_name_for_foo_pk_2"
      }
    }
  }

}

关于grails - 一对多的组合键和Grails中的不同列名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16487271/

相关文章:

javascript - 在grails中发送错误并用Javascript读取

arrays - 将数组映射到 kotlin 对象列表

python - 散列两个序列中的值时如何处理被零除错误

带有案例的 Python map()

mongodb - 无法下载Grails Datastore Gorm 3.1.3版本

grails - 仅在grails目标存在时运行

grails - 我可以在 groovy 域中注入(inject)依赖项吗?

intellij-idea - 在Intellij中运行应用程序无法编译域-但是bootRun可以工作

spring - grails +单例服务,用于将对象保存到数据库以供云应用程序

grails - 在Groovy类中导入groovyx.net.http.RESTClient