【问题标题】:How to use multiple criteria.add(restrictions)如何使用多个条件。添加(限制)
【发布时间】:2018-07-01 16:38:21
【问题描述】:

我可以使用多个条件。添加吗?如果我想

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);

【问题讨论】:

  • 你明确地使用数据 jpa 而不是 Hibernate。您可以使用多个 add multiple criteria.add() 但如果您使用 spring boot 则无需手动执行。

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


【解决方案1】:

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

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();}

【讨论】:

    【解决方案2】:

    您明确地使用 spring data jpa 而不是 Hibernate。您可以使用多个 add multiple criteria.add() 但如果您使用 spring boot 则无需手动执行。

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

    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/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多