Hibernate在一个hbm文件中映射两个具有相同类名的表?

Hibernate在一个hbm文件中映射两个具有相同类名的表?,hibernate,modelattribute,Hibernate,Modelattribute,我有两张桌子: CREATE TABLE "LOCATION" ( "ID" NUMBER(19,0) NOT NULL ENABLE, "VERSION" NUMBER(19,0) NOT NULL ENABLE, "DELETEULD" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, "INBOUND" NUMBER(1,0) DEFAULT 0 N

我有两张桌子:

CREATE TABLE "LOCATION"   (
    "ID"              NUMBER(19,0) NOT NULL ENABLE,
    "VERSION"         NUMBER(19,0) NOT NULL ENABLE,
    "DELETEULD"         NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE,
    "INBOUND"           NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE,
    "AAENABLED"         NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE,
    "WSUPLDTOOL"        NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE,
    "CISDEST"           VARCHAR2(7 CHAR),
    "REVRECOVERY"       NUMBER(1,0) DEFAULT 0,
    CONSTRAINT "LOCATION_ID" PRIMARY KEY ("ID")  ENABLE  )

CREATE TABLE "TSLD164"."FTP_SCAN_EVENTS"
  (
    "HOSTNAME"    VARCHAR2(200 BYTE),
    "DIRECTORY"   VARCHAR2(200 BYTE),
    "USERNAME"    VARCHAR2(20 BYTE),
    "PASSWORD"    VARCHAR2(20 BYTE),
    "LOCATION_ID" NUMBER(19,0) NOT NULL ENABLE,
    CONSTRAINT "FTP_SCAN_EVENTS_LOCATION_FK1" FOREIGN KEY ("LOCATION_ID") REFERENCES "LOCATION" ("ID") ENABLE
  )
与FK和PK位置相关的表\u Id列和Id

我有一个表单,上面的所有列都是字段。但是,表FTP_SCAN_EVENTS中的列是隐藏的,通过选中复选框REVRECOVERY,它们将显示在表单中。用户可以根据需要动态添加行

<td><form:checkbox path="revRecovery" onclick="showMe('div1',this), showMe('i1',this)"/>
            <input type="hidden" value="1" name="_revRecovery"/>
            FTP Scan Events</td></tr><tr><td colspan="4">
                    <table id="div1" style="display:none">
            <tr><td><input type="text" value="hostname" onfocus="if(this.value == 'hostname'){this.value =''}" onblur="if(this.value == ''){this.value ='hostname'}" size="30" maxlength="200"/></td>
            <td><input type="text" value="directory" onfocus="if(this.value == 'directory'){this.value =''}" onblur="if(this.value == ''){this.value ='directory'}" size="30" maxlength="200"/></td>
            <td><input type="text" value="username" onfocus="if(this.value == 'username'){this.value =''}" onblur="if(this.value == ''){this.value ='username'}" size="20" maxlength="20"/></td>
            <td><input type="text" value="password" onfocus="if(this.value == 'password'){this.value =''}" onblur="if(this.value == ''){this.value ='password'}" size="20" maxlength="20"/></td></tr>
                    </table>
            </td></tr>
            <tr id="i1" style="display:none"><td><input type="button" onclick="addRow()" value="+"/>
            <input type="button" onclick="removeRowFromTable();" value="-" />
            </td></tr>
位置的我的hbm文件:

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="ca.ups.tundra.model">
    <class name="Location" table="LOCATION">
        <id name="id" access="field" type="long">
            <generator class="native"/>
        </id>
        <version name="version" access="field" column="VERSION" type="long"/>

        <property name="cisDest" type="string" column="CISDEST" length="7" not-null="true"/>
        <property name="revRecovery" type="boolean" not-null="true"/>
        <property name="deleteUld" type="boolean" not-null="true"/>
        <property name="inbound" type="boolean" not-null="true"/>
        <property name="aaEnabled" type="boolean" not-null="true"/>
        <property name="wsUpldTool" type="boolean" not-null="true"/>        
        <property name="locationType" type="string" column="LOCATIONTYPE" length="2" not-null="true"/>
        <set name="groups" table="LOCATIONGROUPS" cascade="save-update" access="field">
            <key column="LOCATION_ID"/>
            <many-to-many class="LocationGroup" column="GROUP_ID"/>
        </set>
    </class>
</hibernate-mapping>
Location的模型类只是setter和getter方法


我需要将第二个表映射到与上面相同的映射文件中,并且需要对getter和setter方法使用相同的模型类

根据您的澄清,您想看看。然而,由于你没有给出具体情况,我只能在一般情况下帮助你。与JPA@SecondaryTable基本相同的功能允许您将两个表之间的连接列视为一个组合行,以定义实体的基本类型。有一些注意事项,例如期望共享主键(也称为真正的一对一集合);有关详细信息,请参阅文档。无论如何,假设您有一个名为location\u supp的二级表,其主键名为location\u id,将FK引用回location.LocationId,您会说:

<class name="Location" table="Location" ...>
    <id name="id" column="LocationId" .../>
    <property name="name" column="name" .../>
    <!-- mappings for other columns from Location table -->

    <join table="location_supp">
        <!-- 
            key defines the pk column of that joined table which is assumed to 
            also be the foreign-key source column referring back to Location
        -->
        <key column="location_id"/>

        <!-- mappings for columns from location_supp table -->
    </join>

</class>

根据你的澄清,你想看看。然而,由于你没有给出具体情况,我只能在一般情况下帮助你。与JPA@SecondaryTable基本相同的功能允许您将两个表之间的连接列视为一个组合行,以定义实体的基本类型。有一些注意事项,例如期望共享主键(也称为真正的一对一集合);有关详细信息,请参阅文档。无论如何,假设您有一个名为location\u supp的二级表,其主键名为location\u id,将FK引用回location.LocationId,您会说:

<class name="Location" table="Location" ...>
    <id name="id" column="LocationId" .../>
    <property name="name" column="name" .../>
    <!-- mappings for other columns from Location table -->

    <join table="location_supp">
        <!-- 
            key defines the pk column of that joined table which is assumed to 
            also be the foreign-key source column referring back to Location
        -->
        <key column="location_id"/>

        <!-- mappings for columns from location_supp table -->
    </join>

</class>

你得说得更具体些。我猜你指的是“第二桌”。但也可能意味着将Location类映射到另一个单独的表。请澄清。Location类到另一个单独的第二个表。与这两个表的关系是PK和FK。您必须更加具体。我猜你指的是“第二桌”。但也可能意味着将Location类映射到另一个单独的表。请澄清。将类定位到单独的第二个表。与两个表的关系是PK和FK。这对我来说很有用。但是,保存数据时会有什么影响?我正在连接表。所以我需要将setter和getter方法放在同一个类位置,对吗?我需要创建不同的DAO类来从第二个表读取吗?哎呀。!Join正在影响整个应用程序。我在位置表中有一堆位置。现在,它只显示位置表中的位置。。!啊。这就是我要求你澄清的原因。听起来你真的在追求。但在你澄清你的问题之前,我已经帮不上忙了。这是一种模糊的方式。你希望你的课程是什么样的?你的表是什么样子的?这对我很有用。但是,保存数据时会有什么影响?我正在连接表。所以我需要让我的setter和getter方法位于同一个类位置。我需要创建不同的DAO类来从第二个表读取吗?哎呀。!Join正在影响整个应用程序。我在位置表中有一堆位置。现在,它只显示位置表中的位置。。!啊。这就是我要求你澄清的原因。听起来你真的在追求。但在你澄清你的问题之前,我已经帮不上忙了。这是一种模糊的方式。你希望你的课程是什么样的?你的桌子看起来像什么?