JPA - 获取匹配多个字符串的所有行

时间:2014-04-25 04:52:47

标签: hibernate jpa

我有一个表UserData,其中包含name,userRole,phonenumber等字段.UserRole字段可以包含ADMIN,USER,MANAGER,OWNER,VIEWER等值。我正在尝试编写一个JPA本机查询,该查询检索userRole为ADMIN,USER,MANAGER ....的所有行。

从屏幕中选择搜索条件。什么是JPA查询,它类似于下面的SQL查询。

来自UserData的SELECT *,其中userRole = ADMIN或userRole = USER或userRole = MANAGER等等......

提前感谢您的帮助。

1 个答案:

答案 0 :(得分: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();

编辑:适用于Hibernate

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

[它的实现/版本特定 - :namedParameter OR(:namedParameter)]