如何使用多个条件。添加(限制)

时间:2018-07-01 16:38:22

标签: java spring-mvc spring-boot spring-data-jpa

我可以使用多个criteria.add吗?如果我想

public ArrayList<Support> SearchSupportby(int appId ,String unikey,Timestamp formDate ,) {
     Criteria criteria = getSession().createCriteria(Support.class, "support");
     if(unikey!=null) {
     criteria.add(Restrictions.eq("support.uuId",unikey));
     }
     if(appId!=null){
     criteria.add(Restrictions.eq("support.applicationId",appId));
     }
     if(formdate!=null){
    criteria.add(Restrictions.eq("support.reportDate", formDate));
     }
}

可能有帮助。我使用

Spring boot 1.2.5

休眠4.3.6

***更改为使用JPA之后,我只知道简单的方法

Conjunction objConjunction = Restrictions.conjunction(); 
objConjunction.add(Restrictions **your Query A **  );
objConjunction.add(Restrictions **your Query B **  );
objConjunction.add(Restrictions **your Query C **  );
criteria.add(objConjunction);

2 个答案:

答案 0 :(得分:0)

您弹出数据jpa而不是显式休眠。您可以使用多个添加多个criteria.add(),但是如果您使用的是Spring Boot,则无需手动进行操作。

您可以通过扩展JpaRepository为支持实体定义存储库。

interface SupportRepository extends JpaRepository<Support,Long>{

}

https://docs.spring.io/spring-data/jpa/docs/current/reference/html/

您可以使用规格来具有多个条件。 https://www.petrikainulainen.net/programming/spring-framework/spring-data-jpa-tutorial-part-four-jpa-criteria-queries/

答案 1 :(得分:0)

我使用休眠创建共享了多个条件。您可以据此进行验证,因为我期望所有参数都可以。

public List<Support> SearchSupportby(int appId ,String unikey,Timestamp formDate ,) {
 Criteria cr = getSession().createCriteria(Support.class, "support");
 Criterion rest1 = Restrictions.or(Restrictions.eq("support.uuId",unikey));
 Criterion rest2 = Restrictions.or(Restrictions.eq("support.applicationId",appId));
 Criterion rest3 = Restrictions.or(Restrictions.eq("support.reportDate", formDate));
 cr.add(Restrictions.and(rest1, rest2, rest3));//according to parameter you can validate it
 cr.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);
 if (cr.list() == null || cr.list().isEmpty()) {
        return null;
    }
return cr.list();}