我有一个BUSINESS
表,如下所示:
BUSINESS_ID | BRN | CODE | PARENT_ID
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
我的公式应如何设置?
非常感谢提前。
答案 0 :(得分:2)
您可以尝试使用公式属性。 here是关于如何使用它的一些文档...
答案 1 :(得分:1)
我无法像原始问题中所说的那样使这种复杂的关系发挥作用。但是,我能说服管理层这是一个糟糕的数据模型。