このクラスの列名をマップしようとしています:
class Amount{
String total //Total amount of something
String type //Type of amount, Dollars, %, Times something
Bonification bonificationRate //the amount can be "x times another bonification"
static belongsTo = [parentBonification: Bonification]
static mapping = {
table "AMOUNTS"
total column: "AMOU_TTOTAL"
type column: "AMOU_TTYPE"
parentBonification column: "BONI_CID"
bonificationRate column: "BONI_TRATE_CID"
}
}
class Bonification {
//among other things:
Amount amount
}
問題は、クラスのフィールドがBonification
DBに作成されておらず、私が付けた名前でも、デフォルトで想定されている名前でもないということです。
コメント編集:
- どちらもドメインクラスです。
- データソースはオンです
dbCreate = "update"
- テーブルをOracleにドロップし、Grailsに再度作成させました。まだBonification列はありません。
dbCreate = "create-drop"
今のところ削除できないデータがあるのでできません。- を使用して新しいローカルDerbyデータベースをマウントしました
dbCreate = create-drop
。まだ運がない。
(PD:他のすべてのフィールドは永続化され、正しい列名でマップされます。これら2つのBonification
フィールドのみが問題になります)
これを行う別の方法はありますか?
Grails:1.3.9
BD:Oracle 9
要求されたDataSource.groovyの編集
(Config.groovyからアクセスされる外部ファイル
grails.config.locations = [ "file:${extConfig}/${appName}Config.groovy"]
)
package xx.xxx.xxxx.xxxXxxx
dataSource
{
pooled = true
dialect = "org.hibernate.dialect.Oracle10gDialect"
driverClassName = "oracle.jdbc.OracleDriver"
username = "XXX"
password = "XXX"
properties {
maxActive = 100
maxIdle = 25
minIdle = 5
initialSize = 5
minEvictableIdleTimeMillis = 60000
timeBetweenEvictionRunsMillis = 60000
maxWait = 10000
validationQuery = "select 1 from dual"
}
}
hibernate {
cache.use_second_level_cache = true
cache.use_query_cache = true
cache.provider_class = 'net.sf.ehcache.hibernate.EhCacheProvider'
}
// environment specific settings
environments {
development {
println "Including external DataSource"
dataSource {
dbCreate = "update"
url = "jdbc:oracle:thin:@xxx.xxx.xx:xxxx:XXXX"
}
}
}