[英]orientdb: passing an Array to a query using 'IN' on an OType.LINKLIST field
我正在嘗試使用SQL中的IN
將Category
POJO數組傳遞給查詢:
public ShareObject[] search(String name, Category[] categories) {
...
OSQLSynchQuery<ODocument> query = new OSQLSynchQuery<ODocument>("SELECT FROM ShareObject WHERE name LIKE ? AND categories IN ?");
List<ODocument> result = db.command(query).execute(name, categories);
這將返回一個空列表。 如果我將SQL更改為以下內容,我會得到一個結果:
"SELECT FROM ShareObject WHERE name LIKE ? AND categories IN [#10:0,#10:1]"
我也試過這個,沒有成功:
OSQLSynchQuery<ODocument> query = new OSQLSynchQuery<ODocument>("SELECT FROM ShareObject WHERE name LIKE ? AND categories IN ?");
List<ODocument> result = db.command(query).execute(name, new String[] { "#10:0", "#10:1" });
試試這段代碼:
OSQLSynchQuery<ODocument> query = new OSQLSynchQuery<ODocument>("SELECT FROM ShareObject WHERE name like ? AND categories IN (?)");
List<ODocument> result = db.command(query).execute(name,"[#10:0,#10:1]");
你可以試試這個:
String category="[";
Category[] categories={new Category("#11:3"),new Category("#11:0")};
for(int i=0;i<categories.length;i++){
if(i==categories.length-1)
category+=categories[i].getRid()+"]";
else
category+=categories[i].getRid()+",";
}
OSQLSynchQuery<ODocument> query = new OSQLSynchQuery<ODocument>("SELECT FROM ShareObject WHERE name like ? AND categories IN (?)");
List<ODocument> result = db.command(query).execute(name,category);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.