来自Hibernate源代码,在Criteria.class中,我们有:
List cats = session.createCriteria(Cat.class)
.createCriteria("kittens")
.add( Restrictions.like("name", "Iz%") )
.list();这里的“小猫”是什么?列的名称?列名不是使用ProjectionList指定的吗?
谢谢
发布于 2011-01-17 11:18:42
下面是完整的example from the Hibernate docs
16.4。联想
通过使用createCriteria()导航关联,您可以指定对相关实体的约束:
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开头。
List cats = session.createCriteria(Cat.class)
.createCriteria("kittens")
.add( Restrictions.like("name", "Iz%") )
.list();在您的示例中,它将返回至少有一只以Iz开头的小猫的所有Cats。
我发现这种语法有点混乱,因为嵌套是扁平的。Java源代码格式化程序也会去掉有用的缩进。
不是使用ProjectionList?指定的列名吗?
这不是投影。你仍然会得到所有的“列”。这就是选择( SQL术语中的WHERE子句)。
发布于 2011-01-17 11:21:38
小猫是猫的收藏。此查询将返回其kitten集合仅包含以"Iz“开头的Cat的Cat对象列表。
编辑:查看Thilo的答案。
https://stackoverflow.com/questions/4709693
复制相似问题