ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
# 10.4.2\. 过滤集合 集合_过滤器(filter)_是一种用于一个持久化集合或者数组的特殊的查询。查询字符串中可以使用`"this"`来引用集合中的当前元素。 ``` Collection blackKittens = session.createFilter( pk.getKittens(), "where this.color = ?") .setParameter( Color.BLACK, Hibernate.custom(ColorUserType.class) ) .list() ); ``` 返回的集合可以被认为是一个包(bag, 无顺序可重复的集合(collection)),它是所给集合的副本。 原来的集合不会被改动(这与“过滤器(filter)”的隐含的含义不符,不过与我们期待的行为一致)。 请注意过滤器(filter)并不需要`from`子句(当然需要的话它们也可以加上)。过滤器(filter)不限定于只能返回集合元素本身。 ``` Collection blackKittenMates = session.createFilter( pk.getKittens(), "select this.mate where this.color = eg.Color.BLACK.intValue") .list(); ``` 即使无条件的过滤器(filter)也是有意义的。例如,用于加载一个大集合的子集: ``` Collection tenKittens = session.createFilter( mother.getKittens(), "") .setFirstResult(0).setMaxResults(10) .list(); ```