【问题标题】:Grails ID (primary key) column as StringGrails ID(主键)列作为字符串
【发布时间】:2013-06-02 06:10:44
【问题描述】:

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

我确信我的问题之一是“生成器:'assigned'”——它似乎依赖于数据库来分配一个值。

基本上,我有一个包含两个 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"
        }
      }


}

【问题讨论】:

标签: string grails primary-key grails-orm crud


【解决方案1】:

试试这个:

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"
      }

}

【讨论】:

  • 嗨,James,非常感谢您的回复 - 在尝试通过 UI 创建新记录时,我仍然收到“字段 'id' 没有默认值”错误 - 并且通过 UI 编辑记录时出现错误“找不到 ID 为空的 FOOBAR” - 还有其他建议吗?感谢您抽出宝贵时间回复!
  • 发布表架构和产生错误的代码。
猜你喜欢
  • 2012-02-09
  • 1970-01-01
  • 2011-05-04
  • 2020-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多