我有一个 User
和 UserRole
模型,如下所示:
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 Criteria API 来不使用 JPQL 实现完全相同的效果。
谁能帮帮我吗?
谢谢, 斯里拉姆·斯里达兰
最佳答案
尝试下面的代码,
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();
关于java - JPA Criteria API 获取具有特定父属性值的实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59542575/