Java hibernate标准API多对多

Java hibernate标准API多对多,java,hibernate,criteria-api,Java,Hibernate,Criteria Api,TaskCategory.hbm.xml <hibernate-mapping> <class name="TaskCategory" table="TASK_CATEGORY" select-before-update="true"> <id name="taskCategoryId" type="integer"> <column name="TASK_CATEGORY_ID"

TaskCategory.hbm.xml

<hibernate-mapping>
        <class name="TaskCategory" table="TASK_CATEGORY" select-before-update="true">
            <id name="taskCategoryId" type="integer">
                <column name="TASK_CATEGORY_ID" />
                <generator class="identity" />
            </id>
            <property name="taskCategory" type="string">
                <column name="TASK_CATEGORY" length="512" not-null="true" />
            </property>
            <property name="taskCategoryGroup" type="string">
                <column name="TASK_CATEGORY_GROUP" length="32" not-null="true" />
            </property>
            <property name="description" type="string">
                <column name="DESCRIPTION" length="255" />
            </property>

            <set name="jurisdictions" inverse="true" table="task_category_jurisdiction">
                <key>
                    <column name="task_category_id" not-null="true" />
                </key>
                <many-to-many entity-name="com.sterling.ag.model.Jurisdiction">
                    <column name="jurisdiction_ID" not-null="true" />
                </many-to-many>
            </set>
        </class>
    </hibernate-mapping>
“a”还有另一个Hibernate文件,其中包含辖区。where子句是一个
StringBuffer

我试过这个:

DetachedCriteria dc1 = DetachedCriteria.forClass(TaskCategory.class);
dc1.setProjection(Projections.distinct(Projections.property("jurisdictions")));
criteriaQuery.add(Restrictions.not(Subqueries.in("a.jurisdiction", dc1)));

@我尝试了以下方法:DetachedCriteria dc1=DetachedCriteria.forClass(TaskCategory.class);dc1.setProjection(Projections.distinct(Projections.property(“辖区”)));criteriaQuery.add(Restrictions.not(subquerys.in)(“a.judiction”,dc1));我对此不确定!记录输出查询并查看得到的结果。您可以登录到控制台。一旦你这样做了,你可以试着自己解决它,或者把它粘贴到这里,让每个人都看到哪里出了问题。
 whereClause.append(" and a.jurisdiction_id not in (select distinct   (j.jurisdiction_id) from " +
                        "task_category_jurisdiction j)" );
DetachedCriteria dc1 = DetachedCriteria.forClass(TaskCategory.class);
dc1.setProjection(Projections.distinct(Projections.property("jurisdictions")));
criteriaQuery.add(Restrictions.not(Subqueries.in("a.jurisdiction", dc1)));