3

我在这里阅读休眠标准文档:

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")或者我可能没有得到这段代码的确切作用,有人可以帮助我消除我的困惑。

4

2 回答 2

4

唯一的区别是CreateCriteria有 2 个没有别名参数的额外重载,这种区别在最新版本中早已不复存在。

但本质上,该应用程序的用法略有不同,它使用CreateCriteria从父级到子级的映射关系,而CreateAlias您使用来自根的自定义别名定义它们

从这里阅读更多信息。

于 2013-08-05T15:52:24.540 回答
2

主要区别在于Criterias' createCriteria()创建并返回子标准(新标准对象)。如果您想为子查询创建标准,这很有用。
这是文档中有关其返回类型的内容

返回:
创建的“子标准”

Criteria's CreateAlias()返回现有的 Criteria 对象
这是文档中关于其返回类型的说明

返回:
this(用于方法链接)

于 2013-08-05T16:02:09.927 回答