2012-01-18 2 views

答えて

10

これらは一般に、休止状態の結果セットトランスフォーマーで使用されます。 APIを読んだり、exampleを見てください。 ResultTransformerは、すべてのCriteria結果要素を変換することができる素敵でシンプルなインターフェースです。

など。すべてのCriteria結果をjava.util.Mapまたは非エンティティBeanとして返すことができます。

ALIAS_TO_ENTITY_MAPhereの例を読むことができます。つまり、

前の2つのクエリによって返されたCatインスタンスによって保持されている子猫コレクションは、条件によって事前フィルタされません。条件に一致する子猫のみを検索する場合は、ResultTransformerを使用する必要があります。

List cats = sess.createCriteria(Cat.class) 
    .createCriteria("kittens", "kt") 
     .add(Restrictions.eq("name", "F%")) 
    .setResultTransformer(Criteria.ALIAS_TO_ENTITY_MAP) 
    .list(); 
Iterator iter = cats.iterator(); 
while (iter.hasNext()) { 
    Map map = (Map) iter.next(); 
    Cat cat = (Cat) map.get(Criteria.ROOT_ALIAS); 
    Cat kitten = (Cat) map.get("kt"); 
} 
+1

条件で事前フィルタリングされた意味はなんですか? – Victor