繁体   English   中英

使用HQL在地图中搜索

[英]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不属于地图键。

我一直在搜索,发现这篇文章与我的问题有关:

使用HQL查询地图的值

虽然,这没有给我解决方案。


这些是我一直尝试不成功的一些查询:

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM