我有一个 Java 类(我们称之为 BigClass),它有一个 Map 作为属性(Map< MyClass,Integer >),我想做的是进行 HQL 查询以根据此地图的值过滤这些类。
实际上,我想做的是恢复 BigClass 的所有实例 (b),它们满足 MyClass b.map.get(m) > 0 的特定实例 (m)。
例如:我想恢复一个 BigClass 的实例,如果它的 map 有一个类似 < m, 2 > 的条目,我不想恢复一个 BigClass 的实例,如果它的 map 有一个类似 < m, 0 > 的条目或者如果 m 不属于映射键。
我一直在搜索,发现这篇文章与我的问题有关:
虽然,它没有给我一个解决方案。
这些是我一直在尝试但没有成功的一些查询:
org.hibernate.QueryException: No index value!
[SELECT e FROM BigClass e WHERE ( map[(SELECT b FROM MyClass b WHERE b.id = ?)] > 0) ]
org.hibernate.QueryException: No index value!
[SELECT e FROM BigClass e WHERE ( index(map) = (SELECT b FROM MyClass b WHERE b.id = ?) ) > 0) ]
提前致谢...