Java 使用HQL在地图中搜索
我有一个Java类(我们称之为BigClass),它有一个Map作为属性(MapJava 使用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不属于映射键 我一直在搜索,发现这篇文章与我的问题有关: 虽然,它没有给我一个解决
以下是一些我一直在尝试但没有成功的问题:
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映射的,事实上它正在工作,并且表已经创建,但是我不知道如何使这个查询工作。