我可以使用多个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);
答案 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();}