舊的數據庫複合鍵模型是如何來模擬Grails中的遺留數據庫複合鍵如何Grails的
我有一個傳統的DB由Grails領域建模的三個表對象
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屬性'bean'時解析對bean'sessionFactory'的引用「會議廠';嵌套異常是org.springframework.beans.factory.BeanCreationException:創建名爲'sessionFactory'的bean時出錯:init方法的調用失敗;嵌套的異常是org.hibernate.HibernateException:失蹤的列:應用程序中的ID
我寧願沒有複合鍵,但我有嚴格的命令不要觸摸數據庫,所以現在我盡我所能它的模式,但組合鍵已經證明了有些困難......
我很確定你需要在Bar類中定義FooId和BazId作爲屬性。請參閱grails文檔第6.5.2.5節,您將看到它將firstName和lastName定義爲Strings,然後引用組合鍵的那些。您正在定義兩個未定義爲組合鍵的字段。 http://grails.org/doc/latest/guide/single.html#identity – Todd