首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >hibernate createCriteria

hibernate createCriteria
EN

Stack Overflow用户
提问于 2011-01-17 11:10:25
回答 2查看 7.9K关注 0票数 0

来自Hibernate源代码,在Criteria.class中,我们有:

代码语言:javascript
复制
List cats = session.createCriteria(Cat.class)
  .createCriteria("kittens")
      .add( Restrictions.like("name", "Iz%") )
  .list();

这里的“小猫”是什么?列的名称?列名不是使用ProjectionList指定的吗?

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-01-17 11:18:42

下面是完整的example from the Hibernate docs

16.4。联想

通过使用createCriteria()导航关联,您可以指定对相关实体的约束:

代码语言:javascript
复制
List cats = sess.createCriteria(Cat.class)
    .add( Restrictions.like("name", "F%") )
    .createCriteria("kittens")
      .add( Restrictions.like("name", "F%") )
    .list();

第二个createCriteria()返回一个新的Criteria实例,该实例引用了

集合的元素。

因此,“kitten”是您的Cat实体的一个集合型属性,为此创建了一个嵌套条件,该条件限制小猫的名称只能以F开头。

我想这意味着你只能得到以F开头的猫的名字,至少有一只猫的名字以F开头。

代码语言:javascript
复制
List cats = session.createCriteria(Cat.class)
 .createCriteria("kittens")
   .add( Restrictions.like("name", "Iz%") )
 .list();

在您的示例中,它将返回至少有一只以Iz开头的小猫的所有Cats。

我发现这种语法有点混乱,因为嵌套是扁平的。Java源代码格式化程序也会去掉有用的缩进。

不是使用ProjectionList?指定的列名吗?

这不是投影。你仍然会得到所有的“列”。这就是选择( SQL术语中的WHERE子句)。

票数 4
EN

Stack Overflow用户

发布于 2011-01-17 11:21:38

小猫是猫的收藏。此查询将返回其kitten集合仅包含以"Iz“开头的Cat的Cat对象列表。

编辑:查看Thilo的答案。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4709693

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档