2016-12-01 6 views
0

ich die nächste SQL-Abfrage haben:Ergebnis Whit doppelte Zeilen in JPA gesetzt (Hibernate)

SELECT 
    @row_number:[email protected]_number+1 AS ID, IGN_DATES.PLACA, IGN_DATES.FECHA, OFF_DATES.FECHA 
FROM 
    (SELECT 
     a.PLACA AS PLACA, MIN(p.FECHA_GPS) AS FECHA 
    FROM 
     POSICIONHISTORIAL p 
    JOIN AUTOMOVIL a ON p.SECAUTOMOVIL = a.SECAUTOMOVIL 
    JOIN EVENTO e ON p.EVENTO_SECEVENTO = e.SECEVENTO 
    WHERE 
     p.FECHA_GPS BETWEEN '2016-09-01' AND '2016-10-01' 
      AND e.CODIGO = 'ENC' 
      AND a.PLACA IN ('SHS946', 'SHT011') 
    GROUP BY a.PLACA , DAY(p.FECHA_GPS)) AS IGN_DATES 
     JOIN 
    (SELECT 
     a.PLACA AS PLACA, 
      SUBSTRING_INDEX(GROUP_CONCAT(p.FECHA_GPS 
       ORDER BY p.FECHA_GPS DESC 
       SEPARATOR ' , '), ',', 2) AS FECHA 
    FROM 
     POSICIONHISTORIAL p 
    JOIN AUTOMOVIL a ON p.SECAUTOMOVIL = a.SECAUTOMOVIL 
    JOIN EVENTO e ON p.EVENTO_SECEVENTO = e.SECEVENTO 
    WHERE 
     p.FECHA_GPS BETWEEN '2016-09-01' AND '2016-10-01' 
      AND e.CODIGO = 'APA' 
      AND a.PLACA IN ('SHS946', 'SHT011') 
    GROUP BY a.PLACA , DAY(p.FECHA_GPS)) 
AS OFF_DATES ON DATE(IGN_DATES.FECHA) = DATE(OFF_DATES.FECHA), 
(SELECT @row_number:=0) AS t; 

Ich benutze MySQL 5.7 und das Ergebnis dieser Abfrage ist:

Result Set in Mysql

Aber die Die native Abfrage, die von JPA 2.1 (Hibernate) aufgerufen wird, gibt doppelte Werte von OFF_DATES.FECHA zurück. Dies sind die Werte aus Eclipse Debug.

Result set in JPA

Die Rowid in der Aussage waren Aggregat mit der Absicht, das Problem zu beheben, aber das war nicht erfolgreich

Vielen Dank für Hilfe mich.

+0

Mögliche Duplikat [? One-To-Many Beziehung doppelte Objekte bekommt whithout "distinct" .Warum mit] (http : //stackoverflow.com/questions/18753245/one-to-many-relationship-gets-duplicate-objects-whithout-usign-distinct-why) –

+0

@AlanHay danke für deinen Kommentar, aber war nicht nützlich für mich, ich postete meine Antwort. – Gaalvarez

Antwort

0

Ich löste diese Frage, das Problem ist nicht die One-To-Many relationship gets duplicate objects whithout using "distinct".Why?.

Das Problem war die Spalten für die Join verwendet, habe ich eine Spalte mehr:

SELECT 
    @row_number:[email protected]_number+1 AS ID, IGN_DATES.PLACA, IGN_DATES.FECHA, OFF_DATES.FECHA 
FROM 
    (SELECT 
     a.PLACA AS PLACA, MIN(p.FECHA_GPS) AS FECHA 
    FROM 
     POSICIONHISTORIAL p 
    JOIN AUTOMOVIL a ON p.SECAUTOMOVIL = a.SECAUTOMOVIL 
    JOIN EVENTO e ON p.EVENTO_SECEVENTO = e.SECEVENTO 
    WHERE 
     p.FECHA_GPS BETWEEN '2016-09-01' AND '2016-10-01' 
      AND e.CODIGO = 'ENC' 
      AND a.PLACA IN ('SHS946', 'SHT011') 
    GROUP BY a.PLACA , DAY(p.FECHA_GPS)) AS IGN_DATES 
     JOIN 
    (SELECT 
     a.PLACA AS PLACA, 
      SUBSTRING_INDEX(GROUP_CONCAT(p.FECHA_GPS 
       ORDER BY p.FECHA_GPS DESC 
       SEPARATOR ' , '), ',', 2) AS FECHA 
    FROM 
     POSICIONHISTORIAL p 
    JOIN AUTOMOVIL a ON p.SECAUTOMOVIL = a.SECAUTOMOVIL 
    JOIN EVENTO e ON p.EVENTO_SECEVENTO = e.SECEVENTO 
    WHERE 
     p.FECHA_GPS BETWEEN '2016-09-01' AND '2016-10-01' 
      AND e.CODIGO = 'APA' 
      AND a.PLACA IN ('SHS946', 'SHT011') 
    GROUP BY a.PLACA , DAY(p.FECHA_GPS)) 
AS OFF_DATES ON DATE(IGN_DATES.FECHA) = DATE(OFF_DATES.FECHA) 
AND IGN_DATES.PLACA = OFF_DATES.PLACA, 
(SELECT @row_number:=0) AS t;