従来のデータベース スキーマ (PostgreSQL) を使用していますが、変更できません。クラスをデータベースモデルにマッピングする際に問題があります。これが私が望むものであり、私が持っているものです
-> データベース スキーマ - DataTable ユーザー- 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
更新 II:
私は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'
更新 III:
さらに進んで、次の変更を行い、メールフィールドとパスワードフィールドのみで動作するようにしました。
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)
);