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