Java 许多检索条件
我在冬眠中有@manytomy关系 比如: 表雇员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
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();