У меня есть таблица BUSINESS
, которая выглядит следующим образом:
BUSINESS_ID | BRN | CODE | PARENT_ID
A Business
может иметь parentBusiness
, которая объединяется из child.parent_id->parent.brn and child.code->parent.code
и может быть представлена запросом:
select * from business childbus left join business parentbus on childbus.parent_id=parentbus.brn and childbus.yppa_code=parentbus.yppa_code where childbus.business_id=?
Как я могу создать такое отношение многие-к-одному для business.parentBusiness
?Следующее сопоставление многие-к-одному создает ссылку от PARENT_ID
до BRN
, но как мне получить ограничение из столбца CODE
там?
<many-to-one name="parentBusiness" class="Business" column="PARENT_ID" property-ref="brn"/>
РЕДАКТИРОВАТЬ
В ответе ниже было предложено использовать formula
.Согласно документации формула должна возвращать только PK для объекта, и она выяснит, как ее заполнить.Вот где я нахожусь:
<many-to-one name="parentBusiness">
<formula>(select parentBusiness.business_id from business parentBusiness where parentBusiness.brn=parent_id and parentBusiness.code=code)</formula>
</many-to-one>
Но это создает ошибку sql
...
from Business business0_
left outer join Business business1_ on
(select parentBusiness.business_id from business parentBusiness where parentBusiness.brn=business0_.parent_id and parentBusiness.code=business0_.code)=business1_.BUSINESS_ID
, потому что, конечно,
ORA-01799: a column may not be outer-joined to a subquery
Как должна быть моя формуланастроить?
Большое спасибо заранее.