1
私はGrailsを学びたいと思っています。私は奇妙な問題に直面しました。私はアプリケーションを作成し、データベースとしてPostgreSQLをセットアップしました。ここに私のapplication.yml
Grailsがデフォルトでnot-nullカラムを生成するのはなぜですか?
dataSource:
pooled: true
jmxExport: true
driverClassName: org.postgresql.Driver
username: postgres
password: XxXxXxXxX
environments:
development:
dataSource:
dbCreate: update
url: jdbc:postgresql://localhost:5432/datarh
test:
dataSource:
dbCreate: update
url: jdbc:postgresql://localhost:5432/datarh
production:
dataSource:
dbCreate: update
url: jdbc:postgresql://localhost:5432/datarh
properties: <ommited>
はその後、私は2つのドメインクラスに作成されます。
class Candidate {
String name
String linkedin
String email
String phone
String personalMessage
String pathCV
static hasMany = [skills: Skill]
static constraints = {
}
}
class Skill {
String skill
String description
static hasMany = [candidates: Candidate]
static belongsTo = Candidate
static constraints = {
}
}
を[OK]を、今私は自分のアプリケーションを起動して、私は私の作成したテーブルをチェックしました。私の驚きのために、私はこの得た:あなたが見ることができるように
CREATE TABLE candidate
(
id bigint NOT NULL,
version bigint NOT NULL,
email character varying(255) NOT NULL,
linkedin character varying(255) NOT NULL,
name character varying(255) NOT NULL,
pathcv character varying(255) NOT NULL,
personal_message character varying(255) NOT NULL,
phone character varying(255) NOT NULL,
CONSTRAINT candidate_pkey PRIMARY KEY (id)
)
WITH (
OIDS=FALSE
);
ALTER TABLE candidate
OWNER TO postgres;
CREATE TABLE candidate_skills
(
candidate_id bigint NOT NULL,
skill_id bigint NOT NULL,
CONSTRAINT candidate_skills_pkey PRIMARY KEY (candidate_id, skill_id),
CONSTRAINT fk_941r0fvlnkcvq9r7jqn5awce4 FOREIGN KEY (candidate_id)
REFERENCES candidate (id) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION,
CONSTRAINT fk_t537lxgp89abb42uf1robp1xp FOREIGN KEY (skill_id)
REFERENCES skill (id) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION
)
WITH (
OIDS=FALSE
);
ALTER TABLE candidate_skills
OWNER TO postgres;
CREATE TABLE skill
(
id bigint NOT NULL,
version bigint NOT NULL,
description character varying(255) NOT NULL,
skill character varying(255) NOT NULL,
CONSTRAINT skill_pkey PRIMARY KEY (id)
)
WITH (
OIDS=FALSE
);
ALTER TABLE skill
OWNER TO postgres;
、すべてのテーブルは、NOT-NULLで作成されました。これをどうすれば解決できますか?
マイ的環境:
- のPostgresSQL 9.4
- Grailsのバージョン:3.1.4
- Groovyのバージョン:2.4.6
- JVMのバージョン:1.8.0_77
すべてをデフォルトでnullにしたい場合は、グローバル制約として設定することもできます。構文と詳細については、http://grails.github.io/grails-doc/3.1.4/guide/validation.html#sharingConstraintsを参照してください。 –
申し訳ありません私は、この振る舞いが逆転する他のフレームワークで使用されています(デフォルトでは 'nullable = true')。 –