orientdb:在OType.LINKLIST字段上使用"IN"将数组传递给查询

fla*_*nze 5 java sql nosql orientdb

我正在尝试Category使用INSQL在SQL 查询中传递一个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);
Run Code Online (Sandbox Code Playgroud)

这将返回一个空列表.如果我将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" });
Run Code Online (Sandbox Code Playgroud)
  • 如何将数组传递给查询,ID或对象?
  • 我是否必须更改SQL语句?
  • 这甚至可能吗?

Ale*_*ota 3

试试这个代码:

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]");
Run Code Online (Sandbox Code Playgroud)