Java Hibernate外键是主键

Java Hibernate外键是主键,java,hibernate,Java,Hibernate,因此,正如您所看到的,存在一个请求到一个无效请求的详细信息。出于某种我不理解的原因,我听说Hibernate将此映射为多对一关系。我的.hbm.xml文件有以下代码: DB Table REQUEST: { primary key REQUEST_ID, String REQUEST_DETAILS } DB Table INVALID_REQUEST_DETAILS{ (foreign key, primary key) fk_req_id references REQUE

因此,正如您所看到的,存在一个请求到一个无效请求的详细信息。出于某种我不理解的原因,我听说Hibernate将此映射为多对一关系。我的.hbm.xml文件有以下代码:

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
}

要求
... (省略了其他列映射)。。。
请不要让我参考“阅读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-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) ...    
    
      <one-to-one name="request" class="Request" constrained="true" />
     </class>
    </hibernate-mapping>