・hasManyしているドメインをとろうとすると、型をキャストしようとした所でFlexからSessionナイヨーって怒られる
基本lazyモードなんで、データを取得しようとした時にFlex側からHibernateのSessionがとれないっぽい
web.xmlに以下の内容を追記してやる事で解決
<filter>
<filter-name>sessionView</filter-name>
<filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>sessionView</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
他にも criteria を使って eager で読み込んでやるとか、domainでeager にしておくとかでも良い、メモメモ
def criteria = Item.createCriteria()
def items = criteria.listDistinct{
fetchMode('contents', FM.EAGER)
}
・hasManyしたフィールドの扱い
hasManyしたドメインはarrayCollectionとしてくるので、Flex側のクラスを合わせておく。
public var contents:ArrayCollection;
他にも grails的にくっつくものをつけておくと、警告が出なくて幸せ。
public var id:int;
public var version:int;
public var metaClass:Object;
・hasManyしたドメインがオートキャストされない
Object扱いになっている、自前でキャストしてやる事は可能
for(var c:Number=0;item.contents.length > c; c++) {
var contents:Content = Content(item.contents[c]);
}
なぜかこのコードは書いておくだけで、実行される前にキャストされている。謎い。キモい。