2014-04-25 36 views
0

我有一個表UserData,其中包含諸如name,userRole,phonenumber等字段。UserRole字段可以具有ADMIN,USER,MANAGER,OWNER,VIEWER等多個值。我正在嘗試編寫一個JPA本機查詢,該查詢檢索userRole爲ADMIN,USER,MANAGER的所有行。JPA - 獲取匹配多個字符串的所有行

從屏幕上選擇搜索條件。什麼可以是與下面的SQL查詢類似的JPA查詢。

SELECT * FROM的UserData其中的UserRole = admin或UserRole的=用戶或UserRole的= MANAGER等....

在此先感謝您的幫助。

回答

3

你可以試試這個。

String selectQuery= "SELECT u FROM UserData u WHERE u.userRole IN :roles"; 
Query query = em.createQuery(selectQuery, UserData.class); 

List<String> roles = Arrays.asList("ADMIN", "USER", "MANAGER"); 

query.setParameter("roles", roles); 
List<UserData> users = query.getResultList(); 

編輯:對於休眠

Query query = session.createQuery("SELECT u FROM UserData u WHERE u.userRole IN (:roles)"); 
query.setParameterList("roles", roles); 

[它的實現/版本具體 - :namedParameter OR(:namedParameter)]

+0

如果你的實現是休眠。我想也許你應該添加額外的信號:{:角色}或者也許(:角色),只是一個提醒。我喜歡你構造List的方式。 – OQJF

+0

@OQJF是正確的,已更新。 –

+0

嗨, 它看起來很簡單。感謝你及時的答覆。我可以使用任何名稱作爲參數:角色?或者它必須與數據庫表列名稱匹配? – MouliPC