java - 使用 HQL 在 map 中搜索

标签 java hibernate dictionary hql

我有一个 Java 类(我们称它为 BigClass),它有一个 Map 作为属性(Map< MyClass, Integer >),我想做的是进行 HQL 查询以根据这张 map 。

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

例如:我想恢复 BigClass 的一个实例,如果它的映射有一个像 < m, 2 > 这样的条目,我不想恢复一个 BigClass 的实例,如果它的映射有一个像 < m , 0 > 或者如果 m 不属于映射键。

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

Using HQL to query on a Map's Values

虽然,它并没有给我一个解决方案。


这些是我一直在尝试但没有成功的一些查询:

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();

关于java - 使用 HQL 在 map 中搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13056216/

相关文章:

java - 如何将加速度计传感器的数据写入文件并写入matlab?

arrays - 如何快速将字典分配给 AnyObject

java - com.sun.tools.javac.util 在 openjdk 8 中可用吗?

java - SpringBoot BeanCreationException : Error creating bean with name 'requestMappingHandlerAdapter' Caused by: java. lang.NoSuchFieldError: defaultInstance

java - while 循环循环所有内容但不保存

java - Play框架持久单元

java - 在 Hibernate 5 中替换 org.hibernate.Transactions.isActive()

java - 使用 spring 的多对多 xml 关系在所有者对象中给出相同的对象

Python 使用多处理构建字典

generics - 温莎城堡解析字典<>失败