2017-10-06 2 views
0

Ich habe dies in meiner DAO hinzugefügt:JPA @Query Probleme mit dem zurückgegebene Objekt

@Query("SELECT distinct LBL.cId, LBL from FooBar LBL ORDER BY LBL.collectedAt DESC") 
    List<FooBar> findDistinctcIdOrderByCollectedAtDesc(); 

Und dann ist dies in meinem Dienst

List<FooBar> fooBars = this.liveBusLocationDao.findDistinctcIdOrderByCollectedAtDesc(); 

Und das ist, was ich habe, wenn ich Inhalte debuggen von fooBars

fooBars = {[email protected]} size = 1 
0 = {Object[2]@11093} 
    0 = "string" 
    1 = {[email protected]} "FooBar(cId=string, internalcId=123456789012, createdAt=2011-11-02 02:59:12.208, collectedAt=2017-10-06 14:26:26.544)" 

Wie kann ich dieses Ergebnis durchlaufen?

+0

dies Spring Data JPA nicht die JPA-API. d. h. es gibt keine solche 'JPA @ Query'. vielleicht etikettieren Sie Ihre Frage richtig – DN1

Antwort

0

Ihre Abfrage fragt nach 2 Attributen. Sie können eine benutzerdefinierte Klasse, dass als die ID und das Objekt oder könnten Sie einfach LBL.cId von SELECT entfernen

sollte Ihre Anfrage sein:

@Query("SELECT distinct LBL from FooBar LBL ORDER BY LBL.collectedAt DESC") 
List<FooBar> findDistinctcIdOrderByCollectedAtDesc(); 

Die deutliche ist im großen und ganzen Reihe arbeiten. werfen Sie einen Blick auf sie, wenn Sie nicht darüber shure sind, können Sie group by LBL

https://stackoverflow.com/a/10066187/3543153

+0

Aber welches Ergebnis würde diese Abfrage mir geben? Auf welche Spalte wird eine eindeutige Bedingung angewendet? – nirvair

+0

ich aktualisierte meine Antwort. Deutliche Arbeit an der ganzen Reihe. Sie können auch distinct durch eine Gruppe ersetzen – DamienB

0

Sie eine Ergebnis Klasse erstellen müssten und spezielle Syntax in der JPA-Abfrage verwenden können, wenn Sie Projektion verwenden möchten, ohne Das Object[] Ergebnis bekommen.

package com.example 

class ResultClass{ 

    int fieldOne; 
    String fieldTwo; 

    public (int fieldOne, intfieldTwo){ 
    // .. set fields 
    } 

} 

und query:

@Query("SELECT distinct new com.example.ResultClass(LBL.cId, LBL.strProperty) from FooBar LBL ORDER BY LBL.collectedAt DESC") 
    List<ResultClass> findDistinctcIdOrderByCollectedAtDesc();