2014-12-02 94 views
0

我正在使用Spring Jpa處理Restful項目,所以我使用@Query註釋。我想知道如何設置別名到我查詢中的列?因爲響應將resulset的每個寄存器顯示爲一個數組0,1,2,而不是顯示我想用別名設置的自定義名稱。jpql查詢中列的別名

這裏的一些代碼

DaoGameI.java

public interface DaoGameI extends JpaRepository<Game, Integer> { 

    @Query("SELECT g.id AS id_game, g.scoreHomeTeam As score_home_team, g.date AS game_date" 
      " FROM Game g " 
     ) 
    public List<Game> allGames(); 

} 

ServiceGame.java

@Autowired 
    private DaoJuegoI iGames; 

    @RequestMapping(value="/all") 
    public @ResponseBody List<Game> all(){ 
     return iGame.allGames(); 
    } 

然後我得到這個響應..

enter image description here

而不是O我想顯示id_game。 而不是1我想顯示score_home_team。 而不是2我想顯示日期

希望有人能幫助我!實現這一

+1

您正在使用的查詢將強制JPA返回數組的集合,因此您可以根據需要將其轉換爲所需的表單。爲什麼不選擇g實例而不是選定的屬性,並將Game實例轉換爲JSON? – Chris 2014-12-03 14:10:08

+0

因爲這種情況下,我需要一些屬性,我認爲有一種方法可以轉換Json實例中的這些屬性..感謝您的回答@Chris – 2014-12-03 16:39:10

回答

1

一種方式是通過定義包含這三個參數的新對象:

public class GameResponse{ 

     private Long id_game; 

     private Long score_home_team; 

     private Date game_date; 

     //All getters and setters 
     //Add a default Constructor 
     //And another parameterized constructor 
     public GameResponse(Long id, Long score, Date date){ 
      this.id_game = id; 
      this.score_home_team = score; 
      this.game_date = date; 
     } 
    } 

現在修改SQL @Query爲 -

@Query("SELECT NEW GameResponse(g.id, g.scoreHomeTeam, g.date) FROM Game g") 
public List<Game> allGames(); 

這可以解決你的問題。