Grails ID(主键)列为String

时间:2013-06-02 06:10:45

标签: string grails primary-key gorm crud

我正在学习Grails,我对遗留表有疑问。现在我在我的控制器中使用脚手架,但最终(当然)将它构建到自定义控制器和视图 - 现在我只是想让模型正确。假设我有一个现有的表FOOBAR,其列为FOOBAR_CODE(varchar,主键)和FOOBAR_DESC(varchar) - 我如何对此进行建模(如创建域类,以便我可以进行CRUD)?我在互联网上搜索无济于事 - 当然我只是遗漏了一些东西。看一些例子,我的最后一次尝试如下。当我访问控制器的“列表”操作时,我看到“代码”和“描述”列,“描述”列中有值,但“代码”列没有(我的应用程序连接到现有表中有一些行) - 很明显我的应用程序没有将我的“代码”属性/列与正确的列(FOOBAR_CODE)相关联 - 这一事实进一步证明了当我尝试添加新条目时我得到错误“字段'FOOBAR_CODE'没有默认值” - 应用程序没有将创建表单上的“Desc”字段与DB中的FOOBAR_DESC列相关联。我相信我的问题将在我未来的研究中得到解答,我知道我正在开枪。有人有什么建议吗?

我确信我的一个问题是“generator:'assigned'” - 这似乎依赖于DB来分配值。

基本上,我有一个包含两个varchar列的现有表(一个是主键),我正在尝试CRUD功能。

我非常感谢任何见解!

谢谢!

class FOOBAR {

    String id
    String code
    String desc

    static constraints = {
    }

    static mapping = {
        table "FOOBAR"

        version false
        columns {
            id column: 'FOOBAR_CODE', generator: 'assigned', name: 'code'
            desc column: "FOOBAR_DESC"
        }
      }


}

1 个答案:

答案 0 :(得分:2)

试试这个:

class FOOBAR {

    String code
    String desc

    static constraints = {
    }

    static mapping = {
        table "FOOBAR" //schema: "SCHEMA" if it is different from the user

        version false
        id generator: 'assigned', name: 'code'
        code column: "FOOBAR_CODE"
        desc column: "FOOBAR_DESC"
      }

}