1

嗨,我对休眠映射和以下保存操作有一些疑问。

我有 Dealer.class 这个属性:

public class Dealer extends Persistent {

private static final long serialVersionUID = 306594798010394718L;

private Domain domain;
private Integer status;
private DealerData activeData;        // this property belongs to DealerData.class
private Set<DealerData> historyData;

他的映射是这样的

<hibernate-mapping>
<class name="sk.bantip.hotel.server.dao.book.Dealer" table="book_dealer" dynamic-update="true" select-before-update="true">
    <id column="idBook_dealer" name="id" type="java.lang.Long">
        <generator class="identity" />
    </id>

    <many-to-one name="activeData" column="idBook_dealerData"
        class="sk.bantip.hotel.server.dao.book.DealerData" />
    <set name="historyData" inverse="true">
        <key column="idBook_dealer" />
        <one-to-many class="sk.bantip.hotel.server.dao.book.DealerData" />
    </set>
    <property name="status" not-null="false" />
</class>

和 DealerData.class

public class DealerData extends Persistent {

private static final long serialVersionUID = 8424120040396958913L;

private String name;
private String registration;
private String taxNumber;
private Long authorUserId;
.... many other props

和 DealerData hbm.xml

<hibernate-mapping>
<class name="sk.bantip.hotel.server.dao.book.DealerData" table="book_dealerData" dynamic-update="true" select-before-update="true" >
    <id column="idBook_dealerData" name="id" type="java.lang.Long">
        <generator class="identity" />
    </id>
    <property name="name" not-null="true" />
    <property name="registration" not-null="true"/>
    <property name="taxNumber" not-null="true" />
    <property name="timestamp" not-null="true"  />
    <property name="authorUserId" column="idAuthor" not-null="true" update="false"/>
    <many-to-one name="dealer" column="idBook_dealer"
        not-null="true" class="sk.bantip.hotel.server.dao.book.Dealer" update="false" />

</class>

基于这个我的映射我不知道我必须在哪里定义cascade="save-update"操作。当我想通过 JSF 输入字段从表单 DealerData 保存属性并提交整个页面时,此语句必须在<many-to-one>DealerData 或 Dealer 的标签内?

我也将 DealerData 的外键设置为 Dealer 中的 NULL。DealerData 中 Dealer 的外键检查为 NOT-NULL,我想保存 DealerData 值,然后必须保存 Dealer。所以经销商的 ID 也必须生成,但不知道如何,因为我得到了 FK 列Column 'id_dealer' 不能为空

有人可以帮我解决这个问题,以及我如何正确构造保存方法,以便两个类都保存在这个方法中吗?非常感谢您的建议。干杯

4

2 回答 2

0

您可以使用:

<bag name="Log" cascade="delete" inverse="true" order-by="DateEntry ASC">
    <key column="complaint" />
    <one-to-many class="ComplaintLog" />
</bag>

或者

<many-to-one name="Status" class="ProcessStatus" cascade="none" not-null="true" />

当您在 [class].hbm.xml 映射文件中设置列时

于 2013-09-11T13:15:56.800 回答
0

请从代码中给出的类代码中删除扩展

于 2013-09-18T16:24:16.037 回答