如何减少JPA CriteriaBuilder中的代码

如何减少JPA CriteriaBuilder中的代码,jpa,reduce,Jpa,Reduce,我对JPA和CriteriaBuilder是新手,希望减少一些代码行 cb.用于添加谓词,但如果它们是null,该怎么办 如何减少这些代码行?谢谢! 我担心代码的可读性 CriteriaBuilder cb = em.getCriteriaBuilder(); CriteriaQuery cq = cb.createQuery(OrganizationEntity.class); Root<OrganizationEntity> root = cq.from(Organizatio

我对JPA和CriteriaBuilder是新手,希望减少一些代码行

cb.用于添加谓词,但如果它们是null,该怎么办

如何减少这些代码行?谢谢! 我担心代码的可读性

CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery cq = cb.createQuery(OrganizationEntity.class);

Root<OrganizationEntity> root = cq.from(OrganizationEntity.class);

Predicate predicateFrom = null;
Predicate predicateTo = null;
if (from != null) {
     predicateFrom = cb.ge(root.get(OrganizationEntity_.id), from);
}
if (to != null) {
     predicateTo = cb.le(root.get(OrganizationEntity_.id), to);
}

if(predicateFrom != null && predicateTo != null) {
    cq.where(cb.and(predicateFrom,predicateTo));
} else if (predicateFrom != null && predicateTo == null) {
    cq.where(predicateFrom);
} else if (predicateFrom == null && predicateTo != null) {
    cq.where(predicateTo);
} 

TypedQuery<OrganizationEntity> query = em.createQuery(cq);

list = query.getResultList();
return list;
CriteriaBuilder cb=em.getCriteriaBuilder();
CriteriaQuery cq=cb.createQuery(OrganizationEntity.class);
Root=cq.from(OrganizationEntity.class);
谓词predicateFrom=null;
谓词谓词o=null;
if(from!=null){
predicateFrom=cb.ge(root.get(OrganizationEntity_uu2;id),from);
}
如果(到!=null){
predicateTo=cb.le(root.get(OrganizationEntity.id),to);
}
if(predicateFrom!=null&&predicateTo!=null){
cq.where(cb.and(predicateFrom,predicateTo));
}else if(predicateFrom!=null&&predicateTo==null){
cq.where(predicateFrom);
}else if(predicateFrom==null&&predicateTo!=null){
cq.where(谓词);
} 
TypedQuery=em.createQuery(cq);
list=query.getResultList();
退货清单;

您可以做的是创建谓词列表

List<Predicate> predicates = new ArrayList<>();

if (from != null) {
     predicates .add(cb.ge(root.get(OrganizationEntity_.id), from));
}
if (to != null) {
   predicates .add(cb.le(root.get(OrganizationEntity_.id), to));
}

if (predicates.size()>0{
    cq.where(cb.and(predicates.toArray(new Predicate[predicates
                .size()])));
}
List谓词=new ArrayList();
if(from!=null){
add(cb.ge(root.get(OrganizationEntity_uz.id),from));
}
如果(到!=null){
add(cb.le(root.get(OrganizationEntity.id),to));
}
if(谓词.size()>0{
cq.where(cb.and(predicates.toArray)(新谓词[谓词
.size());
}