2013-10-29 72 views
0

我對如何爲Hibernate中的映射創建hbm.xml文件存在一些疑問。映射具有多個表中的字段的Java對象時會出現問題。Hibernate與幾個表和本地SQL映射

我們正在使用的自定義框架要求每個對象都有一個hbm.xml文件,但在這種情況下,它的字段位於三個表中,所以我想創建一個本機SQL查詢(上面的另一個要求)並移動Hibernate映射文件中描述的新對象的結果中的字段值。

我的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> 

我不知道如何使這個未做一對多或多對一。我不希望Hibernate檢索對象及其映射的實體,因爲我想從我自己的db2查詢中獲取它。

任何人都知道該怎麼做,或者我可以在哪裏找這個? (我已經在Hibernate API中查找了SQLQuery,只是我沒有得到的映射)。

預先感謝您。

回答

1

您可以根據需要覆蓋任何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當量。