java - Hibernate 映射 - 将两个表连接到一个平面类

标签 java mysql hibernate join mapping

我有两个表:patient_datapatient_diagnosis

Patient_data 包含患者的个人数据,例如:pid (pkey)genderbirth_date

patient_diagnosis 包含已注册患者的诊断数据。它具有以下字段:record_id (pkey)pid (fkey to patient_data(pid))diagnosis_date 和其他相关字段。

现在,我想在 pid 上连接这两个表,并将所有这些字段都放在一个类型的对象中。

这是映射文件:

<hibernate-mapping>
<class catalog="emr" name="in.Models.Emr" table="patient_diagnosis">
<id name="recordid" type="long">
     <column name="record_id"/>
</id>

<property name="diagnosisDate" type="timestamp">
      <column length="19" name="diagnosis_date" not-null="true"/>
</property>

<property name="snomedTermPrimary" type="long">
      <column name="snomed_term_primary" not-null="true" />
</property>

<property name="snomedTermSecondary" type="string">
      <column name="snomed_term_secondary" />
</property>

<property name="episodeNo" type="long">
      <column name="episode_no" not-null="true" />
</property>

<property name="pid" type="long">
      <column name="pid" not-null="true" />
</property>


<join table="patient_data">
     <key column="pid"/>
     <property name="gender" type="string">
          <column name="gender" not-null="true"/>
     </property>
     <property name="birthDate" type="timestamp">
          <column length="19" name="birth_date" not-null="true"/>
     </property>
</join>

</class>
</hibernate-mapping>

但是,连接应用于 patient_diagnosis.record_id = patient_data.pid 而不是 patient_diagnosis.pid = patient_data.pid 即 HQL 应用于第一个表的主键第二个表中的列。

请提供解决方案,以便可以将联接应用于第一个表中提到的列和第二个表中提到的列。还是有别的出路?

请注意,如果我没有为 patient_datapatient_diagnosis 创建类。但是,只创建了具有这些表的字段组合的 Emr 类。

最佳答案

尝试给出外键

 <id name="pid" type="java.lang.Long">
        <column name="pid" />
        <generator class="foreign">
            <param name="property">patient_data</param>
        </generator>
    </id>

我不确定,但也许这应该有效。

 <one-to-one name="patient_data" class="in.Models.Emr"
        cascade="save-update"></one-to-one>

同样在Join类中

  <one-to-one name="patient_diagnosis" class="in.Models.Emr"
        cascade="save-update"></one-to-one>

希望对你有帮助

关于java - Hibernate 映射 - 将两个表连接到一个平面类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37606467/

相关文章:

java - 为什么从 MYSQL 更新时出现语法错误?

mysql - Web.Config 错误 - 在 GoDaddy 上访问 MySQL 数据库

mysql - 如何加快 SELECT .. LIKE 在 MySQL 中对多列的查询?

java - Grails/hibernate 缓存不可预测

java - 未应用 Hibernate @Fetch(Join) 而不是单独的 SELECT

java - : getInputMap(). remove(..) 或将 Action 设置为 "none"哪个更好?

java - 我如何在 intellij IDEA 中设置 javacc

java - 如何在 Eclipse 中按方法的完全限定名称进行搜索

mysql - ActiveRecord 仅查找每小时记录

java - JPA 单向一对多连接表 - 实体映射不起作用