如何减少JPA CriteriaBuilder中的代码
我对JPA和CriteriaBuilder是新手,希望减少一些代码行 cb.用于添加谓词,但如果它们是null,该怎么办 如何减少这些代码行?谢谢! 我担心代码的可读性如何减少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
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());
}