Hibernate Criteria API按比例过滤集合

use*_*339 0 hibernate detachedcriteria hibernate-criteria

我有

Class A{
  List <B> bList

}

Class B {
 String name;

}
Run Code Online (Sandbox Code Playgroud)

现在我想用Hibrnate标准API编写查询,这样我只得到一个带有过滤的bList属性的pojo,只有B pojo的

 where "b.name"  == 'abc'
Run Code Online (Sandbox Code Playgroud)

JB *_*zet 5

这是一件非常危险的事情,虽然它得到了Hibernate的支持,但它不是由JPA支持的,因为它加载的实体并不能反映数据库中存储内容的实际情况.如果您碰巧修改了B列表,Hibernate可能会删除所有与A无关但尚未被查询加载的B.

也就是说,这是一个带有获取模式的简单内连接:

Criteria c = session.createCriteria(A.class, "a");
c.createAlias("a.b", "b");
c.add(Restrictions.eq("b.name", "abc");
c.setFetchMode("a.b", FetchMode.JOIN);
Run Code Online (Sandbox Code Playgroud)