ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# 15.4\. 关联 你可以使用`createCriteria()`非常容易的在互相关联的实体间建立 约束。 ``` List cats = sess.createCriteria(Cat.class) .add( Restrictions.like("name", "F%") ) .createCriteria("kittens") .add( Restrictions.like("name", "F%") ) .list(); ``` 注意第二个 `createCriteria()`返回一个新的 `Criteria`实例,该实例引用`kittens` 集合中的元素。 接下来,替换形态在某些情况下也是很有用的。 ``` List cats = sess.createCriteria(Cat.class) .createAlias("kittens", "kt") .createAlias("mate", "mt") .add( Restrictions.eqProperty("kt.name", "mt.name") ) .list(); ``` (`createAlias()`并不创建一个新的 `Criteria`实例。) `Cat`实例所保存的之前两次查询所返回的kittens集合是 _没有_被条件预过滤的。如果你希望只获得符合条件的kittens, 你必须使用`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"); } ```