【问题标题】:Grails 2 Show transient property that is an alias for id columnGrails 2显示作为id列别名的瞬态属性
【发布时间】:2012-11-12 16:15:25
【问题描述】:

我刚开始使用 Grails,我有一个旧的 MSSQL DB,它需要一个新的花哨的 Grails UI。到目前为止我有这个代码

class Foo {
    version false
    columns {
        id column: 'legacy_id'
        bar column: 'legacy_column_1'
        baz column: 'legacy_column_2'
    }

    static transients = ['oldId']

    public int getOldId() { id }

    int id
    int bar
    String baz
}

还有一些额外的脚手架等等。除了一件事之外,一切都正常工作,那就是我无法让 Grails 在视图中向我显示名为“Old Id”的列,或者就此而言显示列 id。无论我调整什么,我总是只在列表视图中得到栏栏和 baz。

互联网在这个话题上相当安静,所以要么我在这里遗漏了一些明显的东西,这真的很简单,要么我必须磨练我的谷歌技能......

【问题讨论】:

    标签: grails-orm grails-2.0 grails-domain-class


    【解决方案1】:

    你需要把一些东西放到mapping块中

    class Foo {
    
      static mapping = {
        version false
        table 'old_foo'  // whatever you legacy table name is
        id column: 'legacy_id'
        bar column: 'legacy_column_1'
        baz column: 'legacy_column_2'
      }
    
      static transients = ['oldId']
    
      public int getOldId() { id }
    
      int id //not really needed
      int bar
      String baz
    }
    

    当您使用generate viewsgenerate all 创建脚手架时,它不会自动将idoldId 添加到视图中 - 但您可以自己添加以确保它存在于使用

    ${fooInstance.id}
    ${fooInstance.oldId}
    

    您也不需要专门设置 int id - GORM 会自动创建它。

    最后一件事 - 确保在 DataSource.groovy 文件中不要使用 dbCreate 行更改数据库 - 我通常在使用旧数据库时将其完全注释掉。

    【讨论】:

      猜你喜欢
      • 2011-07-20
      • 2011-09-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-16
      • 1970-01-01
      • 2011-12-23
      • 2011-02-10
      相关资源
      最近更新 更多