Java 使用两个参数在查询中休眠

Java 使用两个参数在查询中休眠,java,hibernate,hql,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.

我需要构造一个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) ...)

你知道怎么做吗?

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

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