Hibernate IN查询有两个参数

时间:2011-05-20 09:46:20

标签: java hibernate hql

我需要构建一个hibernate查询,它会执行以下操作:

select p from Person p where (p.name, p.surname) in (('Peter', 'Black'), ('Thomas', 'Peterson'), ('Julia', 'Cook'))

名称/姓氏列表的长度未预先定义,名称和姓氏可以包含任何字符(名称和姓氏命名仅用于说明目的)

此外,我想将值作为查询参数插入,以防止sql注入。

不可接受的解决方案:

(p.name || '--' || p.surname) in (:mergedNameSurname)

我想避免的解决方案:

((p.name = :name1 and p.surname = :surname1) or (p.name = :name2 and p.surname = :surname2) ...)

你知道如何做到这一点吗?

1 个答案:

答案 0 :(得分:1)

我认为没有一个干净的Hibernate解决方案。您可以采用您建议的两种方法之一,也可以添加一个非规范化列,表示两列的串联。即使采用这种方法,您最终也会构建类似于最终查询的内容。