Hibernate HQL查询中如何使用键值在地图中搜索

Hibernate HQL查询中如何使用键值在地图中搜索,hibernate,dictionary,hashmap,hql,Hibernate,Dictionary,Hashmap,Hql,在Java中,当对象书带有price和name字段时 和Map对于books对象,我在where子句方面遇到问题,我想进行以下查询: SELECT b FROM books WHERE (b.price, b.name) IN ((20, 'book1'), (30, 'book2'), (15, 'book3')) 我找不到结果,尝试了 及 大多数行值表达式谓词只是一些更详细语法的语法糖。就你而言: SELECT * FROM books b WHERE (b.price = 20 AN

在Java中,当对象书带有price和name字段时 和
Map
对于books对象,我在where子句方面遇到问题,我想进行以下查询:

SELECT b FROM books
WHERE (b.price, b.name) IN ((20, 'book1'), (30, 'book2'), (15, 'book3')) 
我找不到结果,尝试了 及
大多数行值表达式谓词只是一些更详细语法的语法糖。就你而言:

SELECT * 
FROM books b
WHERE (b.price = 20 AND b.name = 'book1')
   OR (b.price = 30 AND b.name = 'book2')
   OR (b.price = 15 AND b.name = 'book3')
请注意,如果要动态构建此类谓词,您必须自己编写一个SQL生成器,将映射映射到SQL字符串和绑定变量集,或者使用现有的一个,如

如果您有更复杂的语法需要以这种方式进行模拟,则可以使用将它们从标准SQL转换为更基本的SQL


(免责声明:我为jOOQ背后的公司工作)

第三个选项有什么问题:JPA命名查询匹配in子句中的元组列表?我没试过,但看起来不错。你能分享一下你在使用第三个选项时遇到的错误吗?第三个选项涉及到创建另一个实体,这是我想要避免的