Grails:ドメインクラスのマッピング(コレクションのhibernateのユーザータイプ)
-
26-09-2019 - |
質問
私の場合は実現可能で、以下のドメインモデルです。
いドメインクラスを含む設定の間隔(jodaます。利用できまorg.joda.ます。contrib.hibernate.PersistentInterval hibernateのユーザータイプのマッピング間隔のデータベースのテーブル(同様の方法として http://www.grails.org/JodaTime+Plugin).しかできなどをマッピングしている場合は設定の間隔ではな間隔で出ています。
例:
class Activity { ... Set intervals = [] ... static hasMany = [ intervals: org.joda.time.Interval ] // This is incorrect implementation, I have set of intervals // and this would be correct if I had only one interval // How to implement mapping in this case? static mapping = { intervals type: PersistentInterval, { column name: "start" column name: "end" } }
}
実装上の失敗と以下のようなエラー:
2010-10-23 18:30:25,483【本館】エラー コンテキストGrailsContextLoader-エラー 実行bootstraps:エラーの作成 豆名'messageSource':初期化のbeanが入れ子 例外は org.springframework.豆です。工場です。BeanCreationException:エラーの作成豆名 'transactionManager':が解消される訳ではありません 参照豆'sessionFactory' を設定豆物件 'sessionFactory';入れ子の例外は org.springframework.豆です。工場です。BeanCreationException:エラーの作成豆名 'sessionFactory':Initメソッドの呼び出し 方法が入れ子の例外は org.hibernate.MappingException:外部キー (FK4FDC5B1E5107CA0:activity_intervals [スタート、終了]))は同じ数 カラムを参照する主キー (活動[id]) org.springframework.豆です。工場です。BeanCreationException:エラーの作成豆名 'messageSource':の初期化 豆が入れ子の例外は org.springframework.豆です。工場です。BeanCreationException:エラーの作成豆名 'transactionManager':が解消される訳ではありません 参照豆'sessionFactory' を設定豆物件 'sessionFactory';入れ子の例外は org.springframework.豆です。工場です。BeanCreationException:エラーの作成豆名 'sessionFactory':Initメソッドの呼び出し 方法が入れ子の例外は org.hibernate.MappingException:外部キー (FK4FDC5B1E5107CA0:activity_intervals [スタート、終了]))は同じ数 カラムを参照する主キー (活動[id]) でorg.grails.tomcat.TomcatServer.start(TomcatServer.groovy:212)
ると思ったの仕事と周辺のこの課題を抽出する間隔を別のドメインクラス延長の間隔を指定するマッピングすることにあります。しかし、時間間隔は最終的なクラスでの延長はできません。
おり個別にアドバイスを行います。
解決
私の答えを自分の問題かこの答えに役立つ人がいる。
これまで見つかりが一つしかないかを指定されたモデルによる HibernateのXMLファイルマッピング:
<hibernate-mapping package="mappingtest">
<class name="Activity">
<id name="id">
<generator class="native"/>
</id>
<set name="intervals">
<key column="activity_id" not-null="true"/>
<element type="org.joda.time.contrib.hibernate.PersistentInterval">
<column name="startDate"/>
<column name="endDate"/>
</element>
</set>
</class>
</hibernate-mapping>
ドメインクラスの実装:
class Activity {
Long id
Set intervals = []
static constraints = {
}
}
また移動のドメインクラスからは、grails-app/domain src/groovyディレクトリ、そうでないアプリケーションに失敗した(grails-1.3.5):
...
org.hibernate.DuplicateMappingException:二重クラス/エンティティのマッピング mappingtest.活動
...
第二の問題上記実施していたことは、きっ工(試験目的):
class ActivityController {
static scaffold = true
...
}
の作活動に失敗したデータ抽出処理がエラー:
例外のメッセージ:な物件:idクラス:org.joda.ます。間隔 可能なソリューション末より:誤差評価式[i.id】 ライン[38]:な物件:id クラス:org.joda.ます。間隔を可能に ソリューション終了
が実施マニュアルの活動からDBとを示します。
編集:またこの溶液の足場とDuplicateMappingExceptionます。彼らによる無効の場所Activity.hbm.xml -パッケージディレクトリ構造も明らかになった。正しい位置grails-app/conf/hibernate/mappingtest/Activity.hbm.xml.