簡體   English   中英

orientdb:在OType.LINKLIST字段上使用“IN”將數組傳遞給查詢

[英]orientdb: passing an Array to a query using 'IN' on an OType.LINKLIST field

我正在嘗試使用SQL中的INCategory 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" });
  • 如何將數組傳遞給查詢,ID或對象?
  • 我是否必須更改SQL語句?
  • 這甚至可能嗎?

試試這段代碼:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM