[英]Using HQL to search in a Map
我有一个Java类(我们将其称为BigClass),它具有一个Map作为属性(Map <MyClass,Integer>),我想做的是根据该地图的值进行HQL查询以过滤该类。
实际上,我想做的是恢复满足MyClass的特定实例(m)b.map.get(m)> 0的所有BigClass实例(b)。
例如:如果BigClass实例的映射具有类似<m,2>的条目,我想恢复它,而BigClass实例的映射具有类似于<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) ]
提前致谢...
如果可以选择标准,则可能有效
session.createCriteria(BigClass.class)
.joinAlias("map", "entry")
.add(Restrictions.eq("entry", session.load(MyClass.class, id))
.list();
感谢您的回答。 我已经通过删除括号之间的SELECT来解决了这个问题,这是禁止的!
我只是将对象添加为查询的参数,并且此方法有效。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.