StringBuilder query = new StringBuilder("from country ");
query.append("and stateId in (:stateId)");
hqlNamedParam.addParamAndValue("stateId", values);
這裏如果「值」不存在於表中,則獲取所有行。在HqlNamedParams中,如果條件不產生結果提取所有行
我該怎麼做?
StringBuilder query = new StringBuilder("from country ");
query.append("and stateId in (:stateId)");
hqlNamedParam.addParamAndValue("stateId", values);
這裏如果「值」不存在於表中,則獲取所有行。在HqlNamedParams中,如果條件不產生結果提取所有行
我該怎麼做?
我誤解了這個問題,現在我編輯我的答案:
你必須運行兩個查詢。
// The first:
StringBuilder query = new StringBuilder("from country ");
query.append("and stateId in (:stateId)");
hqlNamedParam.addParamAndValue("stateId", values);
// The second (only if the first doesn't return rows)
if (outList == null || outList.size == 0) {
StringBuilder query2 = new StringBuilder("from country ");
}
或者(但您使用更個性化的子查詢)
StringBuilder query = new StringBuilder("from country ");
query.append(" where
(select count(c2.id) from country c2 where c2.stateid in (:stateId)) > 0
and cs.stateid in (:stateId)
or (select count(c3.id) from country c3 where c3.stateid in (:stateId)) = 0");
hqlNamedParam.addParamAndValue("stateId", values);
恐怕你誤解了OP。它說「如果」值「不存在於表中,取所有行」。我將其解釋爲「如果原始查詢不返回任何內容,因爲給定的stateid沒有出現在國家/地區表中,則再次運行查詢,而不使用stateid where子句」 – bpgergo
感謝您的回覆,我的擔憂是我仍然應該去搜索數據庫,如果他們不在數據庫中,我必須考慮所有其他數據庫。 –
@bpgergo:嗯,是的,我誤解了OP。現在我試着回答我的答案。謝謝 –
OP,可以請你闡述這一_「如果‘值’犯規存在於表,獲取所有行」 _你這是什麼這是什麼意思? – bpgergo
@bpgergo在這裏,我必須做的最好的匹配,如果價值有沒有考慮他們其他明智我必須與我擁有任何生活!請寫下我錯誤的語法! –
@ Raghu Chandra:嗨,看我更新的回答 –