您不能對兩個不同的字段執行OR操作。下面是從docs片段:
在JDOQL字符串語法,可以單獨 多個濾波器與|| (邏輯「或」)和& &(邏輯「和」), ,但請記住||。只能使用 時其過濾器 分隔所有具有相同字段 的名稱。換句話說,||只有法律 在情況下的過濾器,在 分離後能夠合併成一個單一的 包括()過濾器:
解決此
// legal, all filters separated by || are on the same field
Query query = pm.newQuery(Employee.class,
"(lastName == 'Smith' || lastName == 'Jones')" +
" && firstName == 'Harold'");
// not legal, filters separated by || are on different fields
Query query = pm.newQuery(Employee.class,
"lastName == 'Smith' || firstName == 'Harold'");
一種方式是存儲你的A和B在列表中。如果您有一個名爲foo的項目列表,您可以在foo = keyword中進行查詢,如果foo中的任何項目匹配,則會將該對象返回到結果中。你不說太多什麼a和b,所以我不知道這是否會爲你工作或不:)
更新:
public class Example {
String firstName;
String lastName;
List<String> allNames;
public Example(String first, String last){
firstName = first;
lastName = last;
allNames = new ArrayList<String>();
allNames.add(first);
allNames.add(last);
}
}
有了類似的東西,你然後可以做一個查詢,其中「allNames =='Smith'|| allNames =='Jones'」。
嗨,感謝您的評論。我不確定關注這個列表,a和b是字符串,我想匹配的關鍵字也是如此。我想完全按照這個非法的例子來做,對你的解決方案來說可能是這樣嗎? – 2011-01-23 10:47:50