我使用OrientDb 2.1-rc4作为文档数据库。我有一个MyClass
类,它经常被多线程应用程序更新。为了提高性能,我删除了从State
类到MyClass
的链接,并添加了从MyClass
到State.
的链接和索引,以便获取{{1}的所有实例我需要获取MyClass
rids的列表,然后查询索引。此查询获取我的状态rids。
State
返回
SELECT DISTINCT(roles.views.states.@rid)
FROM #12:1
此查询在索引中找到正确的rids。
[["#14:0","#14:1"]]
当我把两个问题放在一起时。
SELECT FROM index:MyClass.state
where key in [#14:0,#14:1]
我收到以下错误。
java.lang.ClassCastException:com.orientechnologies.orient.core.sql.query.OSQLSynchQuery无法强制转换为java.util.List
如何让OrientDB将我的子查询视为一个清单?
编辑: 不使用索引时此查询有效。
SELECT FROM index:MWorkUnit.state
where key in (SELECT DISTINCT(roles.views.states.@rid) FROM #12:1)
答案 0 :(得分:0)
这似乎是对索引的查询错误:未正确评估子查询。请问你能打开一个新问题吗?
此解决方法应该有效:
SELECT FROM index:MWorkUnit.state
LET $list = (SELECT DISTINCT(roles.views.states.@rid) FROM #12:1)
where key in $list