Hibernate 与筛选视图的多对多关系

Hibernate 与筛选视图的多对多关系,hibernate,Hibernate,我有一种多对多的工厂对公司关系,因为工厂可以为多个公司生产,公司可以有多个工厂。对于我正在开发的应用程序,我们创建了一个视图,用于根据特定标准筛选公司列表 当我去填充我的工厂列表时,我得到一个错误,因为它查找的公司在其联接表中,但在过滤后的公司视图中没有记录。是否有一种方法可以设置此设置,以便不返回没有公司的工厂,或者我需要重新设置视图 例如: Plant Table Plant A Plant B Plant C Filtered Company Table View Company 1 C

我有一种多对多的工厂对公司关系,因为工厂可以为多个公司生产,公司可以有多个工厂。对于我正在开发的应用程序,我们创建了一个视图,用于根据特定标准筛选公司列表

当我去填充我的工厂列表时,我得到一个错误,因为它查找的公司在其联接表中,但在过滤后的公司视图中没有记录。是否有一种方法可以设置此设置,以便不返回没有公司的工厂,或者我需要重新设置视图

例如:

Plant Table
Plant A
Plant B
Plant C

Filtered Company Table View
Company 1
Company 2
Company 3

Join Table
Plant A -> Company 1
Plant A -> Company 2
Plant B -> Company 4
Plant C -> Company 3
Plant C -> Company 4

Output -> error, company 4 does not exist
Desired Output -> Plant A(Company 1,2) - Plant C(Company 3)
Plant.hbm.xml文件中的我的条目

<set name="company" table="plant_company_join_table" schema="myschema" lazy="false">
            <key>
                <column name="plant_id" not-null="true"/>
    </key>
    <many-to-many class="com.redacted.Company">
        <column name="company_id" not-null="true"/>
    </many-to-many>
</set>

因此,我当然会在放弃并上网后找到答案。所以,对于那些将来有这个问题的人,我是这么做的。从“set”标记中删除表和架构,然后添加“subselect”标记,该标记根据公司表中的条目过滤联接表。希望这有帮助

<set name="company" lazy="false">
    <subselect>
        select plant_id, company_id from myschema.plant_company_join_table jntbl
        join myschema.company_view using (plant_company_id)
    </subselect>
    <key>
        <column name="plant_id" not-null="true"/>
    </key>
    <many-to-many class="com.redacted.Company">
        <column name="company_id" not-null="true"/>
    </many-to-many>
</set>

从myschema.plant\u company\u join\u表jntbl中选择工厂id、公司id
使用(工厂\公司\ id)加入myschema.company\视图