0

我知道应该有一个 PK 和一个 FK 来正常关联两个表,但我处于无法控制遗留系统架构的情况。

我的问题是我想在我的 xxx.hbm.xml 中建立一个一对多的关系,但没有任何 FK 可以关联。但是遗留代码“取决于”一组两列,这些列未声明为复合 PK 或 FK。
PaymentDelivery 是一方面,PaymentItemDelivery 是多方面。

我在paymentDelivery.hbm.xml(一侧)中试过这个

<bag 
        name="paymentItemDelivery"
        fetch="join"
        lazy="false"
        >
        <key>
            <column name="payment_id"></column>
            <column name="delivery_num"></column>
        </key>
        <one-to-many
            class="kr.co.sgis.services.web.mobile.payment.form.PaymentItemDelivery"
            />

</bag>

和其他方式,但它给了我错误,如列数必须与 FK 的列数匹配,或者我的 FK 列数错误。“但我告诉你 Hibernate,它们不是 FK!”
我也尝试过使用属性标签,但没有任何运气。使用属性标签也给了我“集合元素映射的列数错误”错误。

通过使用 Annotations 可以实现上述关联

JoinColumns

我如何对 XML 做同样的事情?
我也在paymentDelivery.hbm.xml(一侧)中尝试过这个

<bag 
        name="paymentItemDelivery"
        fetch="join"
        lazy="false"
        >
        <key property-ref="logicalPaymentItemDeliveryAccosiation">

            </key>
            <one-to-many
                class="kr.co.sgis.services.web.mobile.payment.form.PaymentItemDelivery"
                />

        </bag>
<properties 
            insert="false"
            unique="false"
            update="false"
            name="logicalPaymentItemDeliveryAccosiation">

        <property 
            name="payment_id" 
            column="PAYMENT_ID" 
            insert="false" 
            unique="false" 
            update="false">
        </property>

    <property 
        name="delivery_num" 
        column="DELIVERY_NUM" 
        insert="false" 
        unique="false" 
        update="false">
    </property>
</properties>

并在 paymentItemDelivery.hbm.xml(多方面)

<properties 
        insert="false"
        unique="false"
        update="false"
        name="logicalPaymentItemDeliveryAccosiation">
        <property 
            name="payment_id" 
            column="PAYMENT_ID" 
            insert="false" 
            unique="false" 
            update="false">

        </property>
        <property 
            name="delivery_num" 
            column="DELIVERY_NUM"
            insert="false" 
            unique="false" 
            update="false">

        </property>
    </properties>

它抛出

collection foreign key mapping has wrong number of columns: 
kr.co.sgis.services.web.mobile.payment.form.PaymentDelivery.paymentItemDelivery
type: component[payment_id,delivery_num]
4

1 回答 1

0

好的,我得到了这个工作。

我使用了属性标签,我必须在表中添加一个唯一键!

于 2013-06-03T10:23:54.723 回答