我有一个表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等等......
提前感谢您的帮助。
答案 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)]