Java 许多检索条件

Java 许多检索条件,java,hibernate,jpa,Java,Hibernate,Jpa,我在冬眠中有@manytomy关系 比如: 表雇员 public class Employee implements Serializable { @ManyToMany(fetch = FetchType.EAGER) @Fetch(FetchMode.SELECT) @JoinTable(name = "employee_role", joinColumns = { @JoinColumn(name = "employee_id") }, inverseJoinCol

我在冬眠中有@manytomy关系 比如: 表雇员

public class Employee implements Serializable {
    @ManyToMany(fetch = FetchType.EAGER)
    @Fetch(FetchMode.SELECT)
    @JoinTable(name = "employee_role", joinColumns = { @JoinColumn(name = "employee_id") }, inverseJoinColumns = { @JoinColumn(name = "role_id") })
    private Set<Role> roles = new HashSet<Role>(0);
}
当角色具有特定值时,如何通过休眠标准获取所有员工
或者子查询

如果我理解正确,您希望让所有员工都有一个特定的角色。为什么要为此使用CriteriaAPI。HQL更加简单易读:

select e from Employee e inner join e.roles role where role.id = :roleId
如果您真的想使用Criteria API,下面是:

Criteria c = session.createCriteria(Employee.class, "employee");
c.createAlias("employee.roles", "role");
c.add(Restrictions.eq("role.id", roleId));
List<Employee> employeed = c.list();
criteriac=session.createCriteria(Employee.class,“Employee”);
c、 createAlias(“employee.roles”、“role”);
c、 添加(Restrictions.eq(“role.id”,roleId));
List employeed=c.List();

请尝试T的答案,并返回表中不相同数字的多行 解决方案是添加setResultTransformer(Criteria.DISTINCT\u ROOT\u实体)

criteriac=getCurrentSession().createCriteria(Employee.class,“Employee”);
c、 createAlias(“employee.roles”、“role”);
c、 添加(Restrictions.eq(“role.id”,id));
List employeed=c.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY).List();
Criteria c = session.createCriteria(Employee.class, "employee");
c.createAlias("employee.roles", "role");
c.add(Restrictions.eq("role.id", roleId));
List<Employee> employeed = c.list();
Criteria c = getCurrentSession().createCriteria(Employee.class,"employee");
c.createAlias("employee.roles", "role");
c.add(Restrictions.eq("role.id", id));
List<Employee> employeed = c.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY).list();