2

我有旧的数据库架构 (PostgreSQL) 我无法更改它。我在用数据库模型映射我的类时遇到问题,这就是我想要的,也是我所拥有的:

-> 数据库模式 -数据表用户- PostgreSQL

PK id STRING(电子邮件),密码 STRING

-> 我的模型 -域用户

PK邮箱STRING,密码STRING

我需要能够让用户通过create.gsp 视图插入用户的 id(电子邮件),我不想手动更改create.gsp或其他.gsp我希望Grails为我自动生成视图。

那么,我该如何自动生成显示主键的视图,就像其他字段一样让最终用户插入/查看呢?

在我的域中,我有这样的东西:

class Usuario {
    String id
    String password

    static constraints = {
        id email: true
        password blank:false, nullable:false
    }

    static mapping = {
        table 'usuario'
        version false
        id column: 'id', generator: 'assigned'
    }

    String toString(){
        return id
    }
}

在此先感谢,对我的英语感到抱歉!

更新:

我只是尝试将 [以下代码] 插入我的用户控制器,现在我可以看到id字段,但只有当我创建一个新用户create.gsp时,当我在list.gsp中显示用户列表时我不能查看字段ID(电子邮件)

def scaffold = Usuario 

更新二:

我遵循了user1128791的评论,它对我有用,我安装了模板系统,然后我在它上面工作,更改list.gsp表单src/templates/scaffolding以显示 id 字段,如下所示:

excludedProps = Event.allEvents.toList() << 'version' << 'id'
allowedNames = domainClass.persistentProperties*.name << 'dateCreated' << 'lastUpdated'

为了这

excludedProps = Event.allEvents.toList() << 'version'
allowedNames = domainClass.persistentProperties*.name << 'dateCreated' << 'lastUpdated' << 'id'

更新三:

我更进一步并进行了以下更改,仅适用于我的电子邮件字段和密码字段。

class User {
    String email
    String password

    static transients = ['id']

    void setId(String email) {
       id = email
    }

    String getId() {
       return email
   }

   static constraints = {
       email email: true, blank:false, nullable:false
       password blank:false, nullable:false
   }
    static mapping = {
        table 'usuario'
        version false
        id generator: 'assigned', name: 'email'
        email column: 'id'
    }

    String toString(){
        return id
    }
}

为了使您能够获得有关我的问题以及我如何解决它的最大信息量,这就是我正在映射的内容:

CREATE TABLE usuario
(
   id text NOT NULL,
   "password" text,
    CONSTRAINT "PK usuario" PRIMARY KEY (id)
);
4

1 回答 1

1

来自http://www.grails.org/Artifact+and+Scaffolding+Templates

要为您的项目自定义模板,您需要安装模板:

grails install-templates

这将在您的项目中创建 src/templates 文件夹,其中将包含各种工件和脚手架模板。

比您必须更改每个 *.gsp 模板以呈现文本字段而不是 ID 的隐藏字段。

编辑:查看模板。Grails 2.0 应该为“分配”的 id 自动执行此操作。

于 2012-07-09T11:21:06.650 回答