2014-12-02 4 views
0

Я работаю в проекте Restful с Spring Jpa, поэтому я использую аннотацию @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

+0

Потому что для этого случая мне нужно несколько атрибутов, и я думаю, что есть способ конвертировать их в экземпляры Json .. спасибо за ваш ответ @Chris –

ответ

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(); 

Это решает проблему.

Смежные вопросы