Orientdb: passing an array to the request using "IN" in the OType.LINKLIST field

I am trying to pass a CategoryPOJO array to a query using INin SQL:

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);

This will return an empty list. If I change SQL to the following, I get the result:
"SELECT FROM ShareObject WHERE name LIKE ? AND categories IN [#10:0,#10:1]"

I also tried this, without success:

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" });
  • How do I pass an array to a query, ID, or objects?
  • Do I need to change the SQL statement?
  • Is it possible?
+4
source share
2 answers

Try this code:

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]");
+2
source

You can try the following:

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);
+2
source

Source: https://habr.com/ru/post/1621071/


All Articles