2013-11-25 4 views
0

У меня есть отношения к компании, которые являются многими-ко-многим, потому что завод может производить для нескольких компаний, и компания может иметь несколько заводов. Для приложения, которое я разрабатываю, мы создали представление для фильтрации списка компаний по определенным критериям.Отношения «многие-ко-многим» с отфильтрованным видом

Когда я отправляюсь заполнять список растений, я получаю сообщение об ошибке, поскольку он ищет компании, которые находятся в таблице соединений, но не имеют записи в отфильтрованном представлении компании. Есть ли способ установить это, чтобы растения без компаний не возвращались или мне нужно было переработать мою настройку просмотра.

Пример:

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> 

ответ

0

Так что, конечно, я нахожу ответ, как только я сдаюсь и спрашиваю в Интернете. Итак, для тех из вас, кто в будущем имеет эту проблему, вот что я сделал. Удалите таблицу и схему из тега '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> 
Смежные вопросы