Grails でレガシー データベースの複合キーをモデル化する方法
Grails ドメイン オブジェクトによってモデル化された 3 つのテーブルを持つレガシー データベースがあります。
class Foo {
static hasMany = [bars: Bar]
static mapping = {
version false
columns {
id column: "FooId"
fooProp column: "FooProp"
}
}
}
class Bar implements Serializable{
Baz baz
static hasMany = [foos: Foo]
static belongsTo = [Foo]
static mapping = {
version false
columns {
id composite: ["FooId", "BazId"]
baz column: "BazId"
barProp column: "BarProp"
}
}
}
class Baz {
static hasMany = [bars: Bar]
static mapping = {
version false
columns {
id column: "BazId"
bazProp column: "BazProp"
}
}
}
しかし、これをデプロイしようとすると、次の例外が発生します
原因: org.springframework.beans.factory.BeanCreationException: 名前 'transactionManager' の Bean の作成中にエラーが発生しました: Bean プロパティ 'sessionFactory' の設定中に Bean 'sessionFactory' への参照を解決できません。ネストされた例外は org.springframework.beans.factory.BeanCreationException: 'sessionFactory' という名前の Bean の作成中にエラーが発生しました: init メソッドの呼び出しに失敗しました。ネストされた例外は org.hibernate.HibernateException: Missing column: id in app.Bar
私はむしろ複合キーを持っていませんが、DBに触れないように厳密な命令があるので、今はそれをモデル化するために最善を尽くしていますが、複合キーはやや難しいことが証明されています...