2015-11-07 91 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