CreateAlias方法并不返回新的Criteria,而createCriteria会返回新的Criteria,也就是说:
DetachedCriteria dc = DetachedCriteria.forClass(EmApply.class); //root
//此处接近着调用add(),alias 就会指向type,因为当前的Criteria的实例是新建的
dc.createCriteria("emApplyType","type").add(Restrictions.sqlRestriction("{alias}.typeName like '%xx%'"));
createCriteria 使用于多级实体对象查询,比如 EmApply类的emApplyType 属性还关联了另一个实体对象,
单纯的像一下这样用,两方法没什么太大的区别:
DetachedCriteria dc = DetachedCriteria.forClass(EmApply.class); //root
dc.createCriteria("emApplyType","type"); //没有紧跟着add()方法,在下边的查询中,也可以用type这个别名.
dc.createAlias("org", "o");
dc.add(Restrictions.eq("type.id", Long.parseLong(applyType+"")));
dc.add(Restrictions.eq("o.id", Long.parseLong(applyType+"")));
本文探讨DetachedCriteria在进行多级实体对象查询时,createAlias与createCriteria的区别。createAlias不返回新Criteria,直接在当前实例添加别名,而createCriteria返回新Criteria,可用于更复杂的查询结构。例如,当查询EmApply类及其关联的emApplyType和org实体时,两者的使用方式有所不同。

289

被折叠的 条评论
为什么被折叠?



