使用没有关联的Hibernate加入两个相同的表

时间:2014-11-07 16:19:36

标签: spring hibernate join db2

我有两个表table1和table2,它们与Schema和Composite ID完全相同。唯一的区别是它们中存在的数据。第一个表有4个月的数据,另一个表有21个月的数据。在我的应用程序中,我需要两个表的who数据。在这里,我们不能将这两个表关联起来,因为数据不会出现在任何场景中。

我试图在HQL查询中使用FULL JOIN加入两个表2个不同的pojos但是它要求加入的路径,这意味着要在hibernate中加入的实体之间应该有一些关联。

我也为这两个表尝试了一个pojo,因为它们完全相似,除了它们中的数据。为此,我使用了hibernate功能实体名称。但它给我一个错误如下;

**persistent class not known: MainClass**

这是我用来将表映射到实体的HBM:

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<!-- Generated Nov 2, 2014 7:23:43 PM by Hibernate Tools 3.4.0.CR1 -->
<hibernate-mapping>
        <class name="pojos.MainClass"
        table="table1" entity-name="table1">
        <composite-id class="pojos.CompositeID"
            name="compositeID">
            <key-property name="*****" type="string">
                <column name="*****" length="5" />
            </key-property>
            <key-property name="*****" type="string">
                <column name="*****" length="3" />
            </key-property>
            <key-property name="*****" type="string">
                <column name="******" length="3" />
            </key-property>
            <key-property name="****" type="string">
                <column name="****" length="7" />
            </key-property>
        </composite-id>
        <property name="****" type="string">
            <column name="****" length="7" />
        </property>
        <one-to-one name="otherClass"
            class="pojos.OtherClass"></one-to-one>
    </class>
    <class name="pojos.MainClass"
        table="table2" entity-name="table2">
        <composite-id class="pojos.CompositeID"
            name="compositeID">
            <key-property name="*****" type="string">
                <column name="*****" length="5" />
            </key-property>
            <key-property name="*****" type="string">
                <column name="*****" length="3" />
            </key-property>
            <key-property name="*****" type="string">
                <column name="******" length="3" />
            </key-property>
            <key-property name="****" type="string">
                <column name="****" length="7" />
            </key-property>
        </composite-id>
        <property name="****" type="string">
            <column name="****" length="7" />
        </property>
        <one-to-one name="otherClass"
            class="pojos.OtherClass"></one-to-one>
    </class>
</hibernate-mapping>

请建议我哪种方法可以从两个相同的表格中获取所有数据而无需重复。

感谢。 Sujith G

1 个答案:

答案 0 :(得分:0)

我可以想到两种方法

  1. 创建数据库视图并将其映射到实体类。这样可以避免重复。
  2. 创建数据库联合查询。看看here