私のアプリでGrails Datasourcesプラグインを使用していて、読み取り専用の関連付け(親)を参照している(chidl)クラス。たとえば、次のようにGrails Datasources "子行を追加または更新できません:外部キー制約が失敗しました"
/* Parent domain class; a read-only datasource using the Datasources plugin */
class Parent {
//...Some fields
}
/* Child domain class, referencing the parent class */
class Child
// Some fields
static hasOne = [parent:Parent]
}
私は試してみて、私の子クラスを永続化するとき、私は
このエラーが出るCannot add or update a child row: a foreign key constraint fails
(`foo`.`child`, CONSTRAINT `FK38A5EE5F707D1A2B`
FOREIGN KEY (`id`) REFERENCES `parent` (`id`))
私はGrailsの(読み取り専用)から参照されるテーブルの地元、空のコピーを作成していることに気づいdatasource A
へ私のローカル(書き込み可能)datasource B
は、起動時にテーブルが作成されるときに表示されます。代わりに、このテーブル(およびその新しく作成されたFK)を参照することができますか?その場合、実際のデータソース(つまり、datasource A
)にFK制約が適用されないのはなぜですか?
私は、これは愚かな質問のよう
ご提案してくれてありがとう、とリンク:
はこれを参照してください。私のセッターはどんなものになるのかアドバイスできますか? Parentのリファレンスも必要ないでしょうか? また、フィールドを一時的にマークしていても、データベース/テーブルを削除して再作成したときに、読み取り専用データソースの親テーブルへの外部キー参照がまだ作成されていたことに気付きました。 – raven
あなたのセッターはちょうど何かのようになりますvoid setParent(parent){parentId = parent.id} –
dbCreateがデータソースに設定されていて、GORMがそれほどスマートではないので、おそらく親を作成します。 –