0

我对如何为 Hibernate 中的映射制作 hbm.xml 文件有一些疑问。映射在多个表中具有字段的 Java 对象时会出现问题。

我们使用的自定义框架要求每个对象都有一个 hbm.xml 文件,但在这种情况下,它的字段位于三个表中,所以我想做一个原生 SQL 查询(上面的另一个要求)并将字段值移动到Hibernate 映射文件中描述的新对象的结果。

我的休眠映射文件类似于:

<hibernate-mapping>
<class name="com.mycompany.myproject.model.scommons.companhiaalmacen.CompanhiaAlmacen" table="COMPANHIA_ALMACEN">
    <id name="companyWarehouseId" type="java.lang.Integer" access="field">
        <column name="ID_EMPRESA_NAVE" />
        <generator class="assigned" />
    </id>
    <property name="companyId" type="java.lang.Integer">
        <column name="ID_EMPRESA" />
    </property>
    <property name="warehouseDCId" type="java.lang.Integer">
        <column name="ID_CENTRO_DISTRIBUCION_NAVE" />
    </property>

    <!-- HERE: This attribute NOMBRE_COMERCIAL belongs not only to another table (EMPRESA) -->
    <!-- but also to another schema (GENERAL) as well -->
    <property name="name" type="java.lang.String">
        <column name="NOMBRE_COMERCIAL" />
    </property>

    <property name="creationDate" type="java.util.Date">
        <column name="FECHA_ALTA" />
    </property>
    <property name="creationUser" type="java.lang.String">
        <column name="USUARIO_ALTA" />
    </property>
</class>
</hibernate-mapping>

如果不制作 oneToMany 或 ManyToOne,我不知道如何制作。我不希望 Hibernate 检索对象及其映射的实体,因为我想从我自己的 db2 查询中获取它。

有人知道怎么做,或者我在哪里可以找到这个,好吗?(我已经在 Hibernate API 中寻找过 SQLQuery,只是我没有得到的映射)。

先感谢您。

4

1 回答 1

1

您可以根据 Hibernate 的要求覆盖任何 CRUD 语句。见下文第 18.3 和 18.4 节:

http://docs.jboss.org/hibernate/orm/3.6/reference/en-US/html/querysql.html#querysql-load

也可以通过表定义的模式属性将实体映射到多个表并在多个模式中拥有表,因此这可能是一种更好的方法。

见下文第 2.2.7 节:

http://docs.jboss.org/hibernate/annotations/3.5/reference/en/html_single/#d0e2235

以下显示辅助表可以在另一个模式中:

http://docs.oracle.com/javaee/5/api/javax/persistence/SecondaryTable.html

这些注释将有 XML 等效项。

于 2013-10-29T15:13:42.653 回答