1 対 1 の関係を 2 つの異なる方法で定義しようとしました:
Grails 2.0.3
ケース 1:
class Car {
String model
Engine eng
static constraints = {
eng unique: true
}
}
class Engine {
Double capacity
static belongsTo = [car : Car]
}
ケース 2:
class Car {
String model
static hasOne = [eng : Engine]
static constraints = {
eng unique: true
}
}
class Engine {
Double capacity
static belongsTo = [car : Car]
}
どちらも似ており、どちらも 1 対 1 の双方向マッピングを提供します。残念ながら、DB はどちらの場合も構造が異なります。
ケース 1:
ケース 2:
1回の車と1回のエンジンが2番目のテーブルへのリンクを保持するのはなぜですか。
私の問題はどこですか?DDD の観点からコードを見ていると、どちらの場合も、Car クラスがより重要であり、Car が Engine を集約していることを示唆しています。残念ながら、ケース 2 を DB 側から見ると、むしろ逆であると言えます - エンジン集約車。もちろん、最初のアプローチを使用することもできますが、私が見た grails に関する出版物のほとんどは、関係を定義するための 2 番目の方法を提示しています。たぶん私は何かを誤解していて、hasOne を間違った方法で使用していますか?