如何将hibernate子标准限制应用于java列表?

时间:2016-11-11 05:37:07

标签: java hibernate

class A{
     String name;
     List<B> b;
     boolean ra;
}

 class B{
    boolean rb;  
    int a;
        }

我想添加子条件,b类的所有内容都将来自b类中boolean rb的值为false。

   Criteria criteria = sessionFactory.getCurrentSession().createCriteria(A.class,"a");
    criteria.add(Restrictions.like("a.name","hi", MatchMode.ANYWHERE);

如何添加这个子条件,从b列表中得到一些包含rb值的元素是假的?

1 个答案:

答案 0 :(得分:0)

您可以使用Hibernate文档中描述的别名

List cats = sess.createCriteria(Cat.class)
    .createAlias("kittens", "kt")
    .createAlias("mate", "mt")
    .add( Restrictions.eqProperty("kt.name", "mt.name") )
    .list();

所以在你的情况下你想为'b'创建别名。

Criteria criteria = sessionFactory.getCurrentSession().createCriteria(A.class,"a");
    criteria.createAlias('b', 'b');
    criteria.add(Restrictions.eq('b.rb', false));
    ...

https://docs.jboss.org/hibernate/orm/3.3/reference/en/html/querycriteria.html