一尘不染

JPA或Hibernate-在不同类型的列上联接表

hibernate

有没有办法告诉Hibernate在使用to_char将列连接到另一个表或将NUMBER转换为VARCHAR时将其包装?我遇到的情况是,我的一个表包含一个类型为VARCHAR的通用键列,该列存储另一个表的ID(即Number)。当Hibernate执行它生成的SQL时,我收到一个SQL异常,该SQL使用’=’比较两列。

谢谢…

PS:我知道这不是理想的选择,但是我坚持使用模式,因此必须对其进行处理。


阅读 305

收藏
2020-06-20

共1个答案

一尘不染

使用多对一公式可以做到这一点。从第5.1.22开始。列和公式元素(此先前答复中也提到了解决方案):

columnformula属性可以甚至是相同的属性或关联映射中被合并来表达,例如,奇异的连接条件。

<many-to-one name="homeAddress" class="Address"
        insert="false" update="false">
    <column name="person_id" not-null="true" length="10"/>
    <formula>'MAILING'</formula>
</many-to-one>

带注释(如果您使用的是Hibernate 3.5.0-Beta-2
+,请参见HHH-4382):

@ManyToOne
@Formula(value="( select v_pipe_offerprice.offerprice_fk from v_pipe_offerprice where v_pipe_offerprice.id = id )")
public OfferPrice getOfferPrice() { return offerPrice; }

或者,也许检查@JoinColumnsOrFormula

@ManyToOne
@JoinColumnsOrFormulas(
{ @JoinColumnOrFormula(formula=@JoinFormula(value="SUBSTR(product_idnf, 1, 3)", referencedColumnName="product_idnf")) })
@Fetch(FetchMode.JOIN)
private Product productFamily;
2020-06-20