2016-05-19 11 views
1

Wie verwenden Sie die JPA @Query Notation? Ich möchte die Abfrage auszuführen:So definieren Sie benutzerdefinierte Abfrage mit JPA @Query Annotation

SELECT region, winner_count 
FROM awards_regions 
WHERE award_id = ? 
ORDER BY region 

Ich habe das Repository:

public interface AwardsRegionsRepository extends JpaRepository<AwardRegion,AwardRegionPk>{ 

    List<AwardRegion> findAllByOrderByAwardRegionPk_RegionAscSortKeyAsc(); 
    List<AwardRegion> findByAwardRegionPk_RegionOrderBySortKeyAsc(String region); 

    @Query("select a.region, a.winner_count from awards_regions a " 
      + "where a.award_id = :awardId order by a.region") 
    List<AwardRegion> findByAwardRegionPk_AwardId(@Param("awardId") Long awardId); 

} 

Meine Einheit Java Beans sind

@Entity 
public class AwardRegion implements Serializable{ 

    @EmbeddedId 
    private AwardRegionPk awardRegionPk; 

    @Column(name = "award") 
    private String award; 

    @Column(name = "sort_key") 
    private String sortKey; 

    @Column(name = "winner_count") 
    private String winnerCount; 

} 

... und Embedded-PK

@Embeddable 
public class AwardRegionPk implements Serializable{ 

    @Column(name = "region") 
    private String region; 

    @Column(name = "award_id") 
    private Long awardId; 

} 

Antwort

0

Es sieht so aus, als ob Sie die Datenbank benutzen Tabellenspaltennamen in Ihrer JPA-Abfrage. Verwenden Sie die Java-Bean-Namen.

public interface AwardsRegionsRepository extends JpaRepository<AwardRegion,AwardRegionPk>{ 

    List<AwardRegion> findAllByOrderByAwardRegionPk_RegionAscSortKeyAsc(); 
    List<AwardRegion> findByAwardRegionPk_RegionOrderBySortKeyAsc(String region); 

    @Query("select a.awardRegionPk.region, a.winnerCount from AwardRegion a " 
      + "where a.awardRegionPk.awardId = :awardId order by a.awardRegionPk.region") 
    List<AwardRegion> findByAwardRegionPk_AwardId(@Param("awardId") Long awardId); 

} 
+0

Dies wird als eine Liste von Strings herauskommen, nicht eine Liste von Objekten –

+0

Wenn Sie Objekte für Objekte Abfrage wollen und nicht die einzelnen Felder aus! –

Verwandte Themen