2015-11-07 36 views
0

我正在研究通過休眠連接到MySql數據庫的Java應用程序。休眠視圖顯示應用程序和工作臺中的不同結果

我使用Pojos來定義類並使用類Session來連接到數據庫。

的問題是下一個視圖:

CREATE OR REPLACE VIEW INVENTARIO AS 
SELECT 
    ID_ARTICULO, 
    ID_ESTRUCTURA, 
    ID_ESTRUCTURA_ORIGEN, 
    SUM(STOCK)STOCK, 
    STOCK_MIN, 
    NECESITA_REPO 
FROM 
    HISTORICO_INVENTARIO   
    LEFT JOIN TIPOS_MOVIMIENTO 
    ON HISTORICO_INVENTARIO.ID_TIPO_MOV = TIPOS_MOVIMIENTO.ID_TIPO_MOV 
GROUP BY ID_ARTICULO , ID_ESTRUCTURA , ID_ESTRUCTURA_ORIGEN , STOCK_MIN , NECESITA_REPO; 

在Java中,我映射的觀點是這樣的:

<hibernate-mapping> 
<class name="Pojos.Inventario" table="INVENTARIO">      

    <id name="id_articulo" type="string" column="ID_ARTICULO"/>    

    <property name="id_estructura" type="string" column="ID_ESTRUCTURA" /> 

    <property name="id_estructura_origen" type="string" column="ID_ESTRUCTURA_ORIGEN" /> 

    <property name="stock" type="float" column="STOCK" /> 

    <property name="stock_min" type="float" column="STOCK_MIN" /> 

    <property name="necesita_repo" type="string" column="NECESITA_REPO" /> 


</class> 

我已經說了場「 id_articulo「不是ID,但我必須選擇一個,因爲。

如果我在MySql Workbench中執行這個視圖,我可以正確地得到結果。如果我在我的應用程序中執行相同的查詢,我有不同的結果。

有誰知道爲什麼會發生這種情況?

在此先感謝。

編輯: 我試圖定義XML把SQL的子查詢標籤:

<class name="Pojos.Inventario"> 
    <subselect> 
     SELECT 
     ID_ARTICULO, 
     ID_ESTRUCTURA, 
     ID_ESTRUCTURA_ORIGEN, 
     SUM(STOCK) STOCK, 
     STOCK_MIN, 
     NECESITA_REPO 
     FROM 
     HISTORICO_INVENTARIO   
     LEFT JOIN TIPOS_MOVIMIENTO 
     ON HISTORICO_INVENTARIO.ID_TIPO_MOV = TIPOS_MOVIMIENTO.ID_TIPO_MOV 
     GROUP BY ID_ARTICULO , ID_ESTRUCTURA , ID_ESTRUCTURA_ORIGEN , STOCK_MIN , NECESITA_REPO 
    </subselect> 
    <synchronize table="HISTORICO_INVENTARIO"/> 
    <synchronize table="TIPOS_MOVIMIENTO"/> 
    <id name="id_articulo" type="string" column="ID_ARTICULO"/> 
    <property name="id_estructura" type="string" column="ID_ESTRUCTURA" /> 

    <property name="id_estructura_origen" type="string" column="ID_ESTRUCTURA_ORIGEN" /> 

    <property name="stock" type="float" column="STOCK" /> 

    <property name="stock_min" type="float" column="STOCK_MIN" /> 

    <property name="necesita_repo" type="string" column="NECESITA_REPO" /> 
</class> 

獲取worong結果集

回答

0

讓你的休眠show_sql參數設置爲true。現在嘗試在日誌中捕獲sql並嘗試在sql工作臺中運行它。

<property name="show_sql">true</property> 
+0

完成它。我開了正確的結果集 – n4h1n

0

完成它!

問題是由ID生成的。我添加了一個額外的字段,這是新的ID。現在我得到了正確的結果集

+0

聽起來不錯,你可以修復它.. – bakki

+0

非常感謝@bakki – n4h1n