Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用HQL在地图中搜索_Java_Hibernate_Map_Hql - Fatal编程技术网

Java 使用HQL在地图中搜索

Java 使用HQL在地图中搜索,java,hibernate,map,hql,Java,Hibernate,Map,Hql,我有一个Java类(我们称之为BigClass),它有一个Map作为属性(Map),我想做的是根据这个Map的值进行HQL查询以过滤这些类 事实上,我想做的是恢复BigClass的所有实例(b),它们满足MyClass b.map.get(m)>0的特定实例(m) 例如:我想恢复BigClass的一个实例,如果它的映射有一个类似的条目,我不想恢复BigClass的一个实例,如果它的映射有一个类似的条目,或者如果m不属于映射键 我一直在搜索,发现这篇文章与我的问题有关: 虽然,它没有给我一个解决

我有一个Java类(我们称之为BigClass),它有一个Map作为属性(Map),我想做的是根据这个Map的值进行HQL查询以过滤这些类

事实上,我想做的是恢复BigClass的所有实例(b),它们满足MyClass b.map.get(m)>0的特定实例(m)

例如:我想恢复BigClass的一个实例,如果它的映射有一个类似的条目,我不想恢复BigClass的一个实例,如果它的映射有一个类似的条目,或者如果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();

谢谢你的回答。我已经解决了这个问题,删除括号之间的选择,这是禁止的


我刚刚添加了这个对象作为查询的一个参数,这就成功了。

你用hibernate映射了
映射了吗?此外,这对于您的问题可能很有用:是的,它是用hibernate映射的,事实上它正在工作,并且表已经创建,但是我不知道如何使这个查询工作。