[Grails (グレイルズ) ] GORM 包含しているクラスをテーブルに埋め込む

Domain クラスにメンバとして定義されているオブジェクトは通常別テーブルで親子関係となるが以下の方法だとひとつのテーブルで表現される

Person クラスの中に Address のオブジェクトがある

embedded で埋め込むオブジェクトを指定すると Person テーブルは以下のようなテーブル構造となる

  • id
  • home_address_number
  • home_address_code
  • work_address_number
  • work_address_code

オブジェクト名_メンバー名 が埋め込まれる


http://grails.org/doc/latest/guide/GORM.html#gormComposition




[JAVA] フェイルオーバー時や再起動時に NullPointerException や Cannot get property ‘xxxxxx’ on null object

一回エラーになるとブラウザを開き直さないと回復しないバターンがあったらこのケースの可能性大。

サーブレットコンテナは停止時に、セッションを永続化して起動時に復元しようとしている。
Tomcat のディフォルトだと SESSIONS.ser というファイルに保存している。

セッションに保存しているデータが正しく永続化されてないと正しく復元されない。
フェイルオーバー時や再起動時にセッションの中身が null になりNullPointerExceptionが発生したり、 Cannot get property ‘xxxxxx’ on null object というエラーが出る。

セッションに永続化した際に正しく保存するには

を実装すればよい。

serialVersionUIDはググれば出てくると思うが(ググっても説明が下手でわかりづらいかったら)
新規に作成時は、 1L
更新時には(クラスの構造が変わったら)、適当な値。(前と別の値ならなんでもよい)
と覚えておけばよい。