我有旧的数据库架构 (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)
);