Java 为什么hibernate中的属性API在(条件子选择)中没有方法?

Java 为什么hibernate中的属性API在(条件子选择)中没有方法?,java,hibernate,Java,Hibernate,我的遗留项目中有以下代码片段 DetachedCriteria subCriteria = DetachedCriteria.forClass(Employee.class); subCriteria.setProjection(Projections.distinct(Property.forName ("department.departmentId"))).add(Property.forName("departmentName").eq(departmentName)); C

我的遗留项目中有以下代码片段

  DetachedCriteria subCriteria = DetachedCriteria.forClass(Employee.class);
  subCriteria.setProjection(Projections.distinct(Property.forName ("department.departmentId"))).add(Property.forName("departmentName").eq(departmentName));
  Criteria criteria = getCriteria();
  Property.forName("departmentId").in(subCriteria)
我的问题是,我们在(DetachedCriteria subselect)中有以下方法在属性API中为什么不在(Criteria subselect)中有方法我确信这背后应该有一些原因,但不知怎的,我没有得到这个答案?我这么说的原因是,我们应该能够有另一个标准作为subselect,而不是DetachedCriteria

编辑:-我希望如何创建子标准如下所示,因为此时我有可用的会话,所以我不需要使用DetachedCriteria

  Criteria subCriteria1 =session.createCriteria(Employee.class);   
  subCriteria1.setProjection(Projections.distinct(Property.forName("department.departmentId"))).add(Property.forName("departmentName").eq(departmentName));
 Criteria criteria = getCriteria();
  Property.forName("departmentId").in(subCriteria1)

但是这里不接受subCriteria1,因为只需要DetachedCriteria作为方法参数。为什么不允许条件参数与DetachedCriteria一起使用?

因为条件绑定到会话,而不是detached

如果使用另一个会话创建子标准,会发生什么?应该使用哪种方言、拦截器、查询替换等