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\视图