有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

具有特定父属性值的java JPA标准API获取实体

我有一个UserUserRole模型,看起来像这样:

User.java

public class User {

    @Id
    private Long id;

    private String name;

    @ManyToOne
    @JoinColumn(name = "ROLE_ID")
    private UserRole role;

    //All other properties...

}

UserRole.java

public class UserRole {

    @Id
    private Long id;

    private String name;

    //All other properties...

}

我需要能够获取所有拥有role = 1L的用户

我可以用JPQL实现这一点,如下所示:

TypedQuery<SystemUser> query = entityManager.createQuery("Select u from User u left join u.role r where r.id=?1", User.class);
query.setParameter(1, roleId);
return query.getResultList();

然而,出于某种原因,我想知道我是否可以通过简单地使用JPA标准API,在没有JPQL的情况下实现完全相同的

有人能帮我吗

谢谢, 斯利拉姆·斯利德哈兰


共 (1) 个答案

  1. # 1 楼答案

    试试下面的代码

    CriteriaBuilder builder = entityManager.getCriteriaBuilder();
    CriteriaQuery<User> criteriaQuery = builder.createQuery(User.class);
    Root<User> root = criteriaQuery.from(User.class);
    criteriaQuery.where(builder.equal(root.get("role").get("id"), roleId));
    return entityManager.createQuery(criteriaQuery)..getResultList();