2

我正在使用 POJO 来定义两个表(主表和备份表)。两个 XML 类都引用同一个 Java 类。

参考:将同一个 POJO 映射到 Hibernate XML 映射文件中的多个表

<hibernate-mapping>
    <class name="com.mypackage.model.Table1" table="Table1" entity-name="Table1">
        <id name="Id" type="java.lang.Long">
            <column name="ID" />
            <generator class="identity" />
        </id>
        <property name="name" type="string">
            <column name="NAME" length="20" />
        </property>
        <property name="age" type="int">
            <column name="AGE" />
        </property>
    </class>

    <class name="com.mypackage.model.Table1" table="Table2" entity-name="Table2">
        <id name="Id" type="java.lang.Long">
            <column name="ID" />
            <generator class="identity" />
        </id>
        <property name="name" type="string">
            <column name="NAME" length="20" />
        </property>
        <property name="age" type="int">
            <column name="AGE" />
        </property>
    </class>
</hibernate-mapping>

POJO定义:

public class Table1 implements Serializable {

    private static final long serialVersionUID = -594654774484987124L;

    private Long id;
    private String Name;
    private int Age;
// Getters and setters.... Removed...
}

我能够创建不同的表。并且还使用

   session.saveOrUpdate(entityName, myObject)

API 我可以单独为这些表添加新记录。

检索时,我正在使用 HQL

Query query = session.createQuery("from Table1");
list = query.list();

它返回了 Table1 和 Table2 中的所有记录。如果我尝试给 Table2,则会显示错误“Table2 is not mapped”

是否有任何可以单独从表 1 和表 2 中检索记录。

4

1 回答 1

1

将属性添加 polymorphism="explicit"到您的类标签。

代码 :

 <class name="com.mypackage.model.Table1" table="Table1" entity-name="Table1" polymorphism="explicit">
于 2012-12-07T16:43:30.967 回答