2016-06-10 79 views
0

我想从我的结果列中排除一个值。使用休眠排除值

我试过使用conjunction()and()运营商,但无法达到我想要的。

这是我最后学尝试过滤:

public List<Factura> getAll() { 
    Criteria criteria = getSession().createCriteria(Factura.class); 
    Criterion criterion = Restrictions.conjunction().add(Restrictions.eq("estado", "INICIADO")) 
                .add(Restrictions.eq("estado", "CONFIRMADO")); 
    criteria.addOrder(Order.desc("idFactura")); 
    criteria.add(criterion); 
    List<Factura> list = criteria.list(); 
    return list; 
} 
在我的表

estado我有3个可能的值。 INICIADO, CONFIRMADO, RESERVADO我想从我的结果中排除RESERVADO但我不知道我在做什么错,只是得到没有过滤的完整列表。

+0

看一看http://www.objectdb.com/java/jpa/query/criteria –

回答

1

好吧,我尝试了很多事情后发现了一个解决方案,它很容易理解。

public List<Factura> getAll() { 
    Criteria criteria = getSession().createCriteria(Factura.class); 
    criteria.add(
      Restrictions.not(
        Restrictions.in("estado", new String[]{"RESERVADO"}))); 
    criteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY); 
    List<Factura> list = criteria.list(); 
    return list; 
} 

与此我可以排除任何我想要的值。

谢谢大家的阅读和遗憾浪费你的时间。

1

使用Restrictions.ne方法

public List<Factura> getAll() { 
    Criteria criteria = getSession().createCriteria(Factura.class); 
    criteria.add(Restrictions.ne("estado", "RESERVADO")); 
    criteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY); 
    return criteria.list(); 
}