[英]Hibernate + Spring + persist one-to-one relation + empty foreign key
我试图与Spring 1.2.8和Hibernate 3.2.7ga保持一对一的关系,但外键始终为空。
但首先让我简要介绍一下:
我有两个称为“ ClientDomain”(Web域)和“ Measurement”的实体。
休眠映射文件:
ClientDomain.hbm.xml:
<hibernate-mapping package="statistics.jobs.domain">
<class name="ClientDomain" table="domains" lazy="false">
<id column="id" name="id" type="int">
<generator class="native"/>
</id>
<property name="version" not-null="false"/>
<property name="url"/>
<property name="etrackerApiUser" column="etracker_api_user"/>
<property name="etrackerApiKey" column="etracker_api_key"/>
<property name="etrackerUsername" column="etracker_username"/>
<property name="etrackerPassword" column="etracker_password"/>
<set
name="measurements"
table="measurements"
lazy="false"
cascade="merge,save-update"
inverse="true">
<key column="domain" />
<one-to-many class="Measurement"/>
</set>
</class>
</hibernate-mapping>
Measurement.hbm.xml:
<hibernate-mapping package="statistics.jobs.domain">
<class name="Measurement" table="measurements" lazy="false">
<id column="id" name="id" type="int">
<generator class="native"/>
</id>
<property name="version" not-null="false"/>
<property name="time" type="java.util.Date"/>
<property name="numberOfDocuments" column="documents"/>
<one-to-one
name="domain"
class="ClientDomain"
cascade="merge,save-update"
/>
</class>
</hibernate-mapping>
我从某个域的各种来源获取一些统计信息,然后想要保留它们。 这样,我就拥有一个域的历史记录。
ClientDomain对象已经是持久的。
这样创建一个Measurement对象:
Measurement measurement = new Measurement();
measurement.setDomain(domain);
measurement.setTime(new Date());
measurement.setNumberOfDocuments(22222);
measurementManager.insertMeasurement(measurement);
insertMeasurement(测量尺寸):
public void insertMeasurement(Measurement measurement) {
getHibernateTemplate().saveOrUpdate(measurement);
}
结果如下:
+----+---------+-----------+---------------------+--------+
| id | version | documents | time | domain |
+----+---------+-----------+---------------------+--------+
| 82 | NULL | 22222 | 2009-11-16 14:28:32 | NULL |
| 83 | NULL | 22222 | 2009-11-16 14:28:33 | NULL |
| 84 | NULL | 22222 | 2009-11-16 14:28:34 | NULL |
+----+---------+-----------+---------------------+--------+
我已经检查了域实例是否正确。 一切都应有。
那我在做什么错? 为什么域外键没有与测量一起保存?
到目前为止我尝试过的是:
但是到目前为止,我还没有运气。
从ClientDomain到度量,您之间存在一对多的关系。 但是,从Measurement到ClientDomain,您之间存在一对一的关系。
使Measurement与ClientDomain之间的关系成为多对一关系。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.