2011-05-20 54 views
1

我需要構建一個Hibernate查詢,會做這樣的事情:在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

我不認爲這是一個乾淨的Hibernate解決方案。您可以採用您建議的兩種方法之一,或添加代表兩列連接的非規格化列。即使採用這種方法,您最終仍然會構建與最終查詢類似的內容。