createCriteria和createAlias之间的区别

时间:2013-08-05 15:45:42

标签: java hibernate

我在这里阅读hibernate条件文件:

http://docs.jboss.org/hibernate/orm/3.6/javadocs/org/hibernate/Criteria.html

我曾多次使用它,我通常使用 createAlias()来连接表,这里他们提供了两种方法来进行连接并从表中获取数据,有:

 List cats = session.createCriteria(Cat.class)
     .createCriteria("kittens")
         .add( Restrictions.like("name", "Iz%") )
     .list();

 List cats = session.createCriteria(Cat.class)
     .createAlias("kittens", "kit")
     .add( Restrictions.like("kit.name", "Iz%") )
     .list();

所以我无法区分.createCriteria("kittens")createAlias("kittens", "kit")之间的差异,或者我可能无法获得此代码的确切做法,有人可以帮助我清除我的困惑。

2 个答案:

答案 0 :(得分:4)

  

唯一的区别是CreateCriteria还有2个   没有别名参数的重载,这种差异早已消失   最新版本。

     

但基本上应用程序是轻微的   它的用法不同, CreateCriteria使用它的关系   从父级映射到子级,同时使用CreateAlias定义它们   使用来自根目录的自定义别名

here了解详情。

答案 1 :(得分:2)

主要区别在于Criterias' createCriteria()创建并返回子标准(新标准对象)。如果要为子查询创建标准,这非常有用。
以下是有关其返回类型的文档说明

  

返回:
  创建的“子标准”

Criteria's CreateAlias()返回现有条件对象
以下是有关其返回类型的文档说明

  

返回:
   这个(方法链接)