我面臨JPA標準查詢的問題。我怎麼可以添加多個where子句中我的標準與其他如查詢...JPA標準查詢中的條件where子句
我的要求是:
CriteriaBuilder builder = getEm().getCriteriaBuilder();
CriteriaQuery<Object> query = builder.createQuery(Object.class);
// From
Root<EntityClass> entity= query.from(EntityClass.class);
// Select
query.multiselect(entity.get("id").get("col1"),entity.get("id").get("col2"));
// Where
Predicate p1 = builder.and(builder.equal(entity.get("col3"), value3));
Predicate p2 = builder.and(builder.equal(entity.get("col4"), value4));
Predicate p3 = builder.and(builder.equal(entity.get("col5"), value5));
if(someCondition1){
query.where(p1);
}else if(someCondition2){
query.where(p1);
}
query.where(p3);
在上面的代碼中的聲明query.where(P3);取代以前設置的條款條件p1和p2。我找到了替代就是合像下面
if(someCondition1){
query.where(p1, p3);
}else if(someCondition2){
query.where(p2, p3);
}else{
query.where(p3);
}
但是,這不是一個好辦法,因爲當有很多的if-else這變得非常不好寫重複的代碼。任何人都可以爲此提供解決方案嗎?
好的方法謝謝! – Furkan