我有两个玩JPA Objects User.java& UserRole.Java
public User(String email, String password, String firstName, String lastName, Status status, List<UserRole> roles){
this.email = email;
this.password = password;
this.firstName = firstName;
this.lastName = lastName;
this.status = status;
this.roles = roles;
}
的UserRole
public UserRole(User user,RoleType roleType, Status status) {
this.user = user;
this.roleType = roleType;
this.status = status;
}
UserRoles通过
映射到用户@OneToMany(mappedBy="user",fetch=FetchType.EAGER)
public List<UserRole> roles;
我希望编写一个播放JPQL查询,它将返回具有指定角色的所有用户 - 这是否可能,如果可以,如何?
答案 0 :(得分:0)
因为你设计了这样的模型,有两个表User.java
&amp; UserRole.java
),实现目标并不复杂。
如果您的User.java
模型扩展play.db.jpa.Model
类,解决方案可能如下所示:
// by using nested query to find all user that has admin role
List<User> userList = User.find(
"id IN (SELECT user FROM models.UserRole WHERE roleType = ?)",
RoleType.ADMIN
).fetch();
上面的表达式与SQL查询相同:
SELECT * FROM "user" WHERE id IN (
SELECT user_id FROM user_role WHERE role_type = 'ADMIN'
);