3
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
}
因此,你可以看到有一个请求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文档”除非您还提供了一些解释,它包含的概念非常稀疏的解释,我有已经阅读过。我遇到的问题是我的映射文件显然是错误的,因为我无法在我的表中插入任何记录。
问题:
- 我怎样才能解决我的.hbm.xml文件?为什么?
- 如上所述,如果我具有逻辑上的一对一关系,为什么需要多对一的标签?这里的多对一和一对一之间有什么区别?你什么时候用哪个?如果我的外键不是主键,会有什么改变吗?