0

我有两个玩 JPA 对象 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;
    }

用户角色

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 查询,该查询将返回具有指定角色的所有用户 - 这是否可能,如果可以,如何?

4

1 回答 1

0

因为你已经设计了这样的模型,有两个表User.java& 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'
);
于 2013-04-10T08:35:36.700 回答