DB Table REQUEST:
{
primary key REQUEST_ID,
String REQUEST_DETAILS
}
DB Table INVALID_REQUEST_DETAILS{
(foreign key, primary key) fk_req_id references REQUEST.REQUEST_ID,
String INVALID_COMMENTS,
String APPROVER_NAME
}
正如您所看到的,一个REQUEST对应一个INVALID_REQUEST_DETAILS。由于某些我不理解的原因,我听说Hibernate将此映射为多对一的关系。以下是我.hbm.xml文件的代码:
<hibernate-mapping>
<class name="InvalidRequestDetails" table="INVALID_REQUEST_DETAILS">
<id name="id" column="fk_req_id">
<generator class="foreign">
<param name="property">request</param>
</generator>
</id>
... (other column mappings omitted) ...
<many-to-one name="request" class="Request" unique="true" not-null="true" />
</class>
</hibernate-mapping>
请不要只简单地告诉我“阅读Hibernate文档”,除非您能提供一些解释。该文档对概念的解释非常稀少,而且我已经阅读过了。我遇到的问题是我的映射文件显然有误,因为我无法向表中插入任何记录。
问题: 1. 如何修复我的.hbm.xml文件?为什么? 2. 如果我有一个逻辑上的一对一关系,为什么需要一个many-to-one标签? many-to-one和one-to-one之间真正的区别是什么?在什么情况下使用它们?如果我的外键不是主键,会发生什么变化?