我目前正在嘗試基於舊版MySQL數據庫創建新的Grails應用程序。應用程序只應讀取信息。具體的數據庫模式針對特定的域類使用每個類層次結構的表,以及用於向這些類添加新所需信息的屬性類。針對單向1:n關係的Grails GORM數據庫映射
目前我無法檢索一個transation
的屬性信息。沒有例外,但我也無法訪問該字段properties
。我可能面臨的一個問題是,單詞properties
是用於域字段的Grails的關鍵字。但是我需要使用它,因爲特定的傳統表格命名。
遺留表被命名爲transaction
和transaction_properties
。一個transcation
可以有多個transaction_properties
。該關聯通過transaction_properties
表中的密鑰transaction_id
完成。
表交易
id bigint(20)
transaction_id varchar(255) (bad naming here, transaction_id is used to store additional meta information)
表transaction_properties
transaction_id bigint(20) -> referencing to transation.id
property_value varchar(255)
property_key varchar(32)
etc.
域類事務
class Transaction {
static hasMany = [properties : TransactionProperty]
static constraints = {
// transactionProperty unique: true
}
static mapping = {
table "transaction"
version false
columns {
id column : "id"
beginDate column : "start"
endDate column : "end"
type column : "DTYPE"
amount column : "total_amount"
metaId column : "transaction_id"
purchase column : "purchase_id"
service column : "service_id"
origin column : "origin_id"
properties column : "id"
}
}
Long id
Date beginDate
Date endDate
String type
String amount
String metaId
Purchase purchase
Origin origin
Service service
etc.
}
域類TransactionProperty
class TransactionProperty {
static mapping = {
table "transaction_properties"
version false
columns {
id name : "transaction_id"
key column : "property_key"
value column : "property_value"
}
}
String value
String key
Long id
def asString(){
return "${key} = ${value}"
}
}
你就不能更改的hasMany = [屬性:...]至[transactionProperties:...]?您沒有任何列映射到「屬性」一詞。它只是告訴Grails集合的名稱應該是什麼。 – Gregg
當我這樣做時,我收到以下異常。 '造成的:com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:表 'KT-testing.transaction_transaction_properties' 不exist' – user1829893