jpql 查询中列的别名

Raf*_*yes 1 java spring jpa

我正在使用 Spring Jpa 在 Restful 项目中工作,所以我使用的是 @Query 注释。我想知道如何为查询中的列设置别名?因为响应将结果集的每个寄存器显示为数组 0,1,2 而不是我想显示我想用别名设置的自定义名称。

这是一些代码

道游戏I.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();

}
Run Code Online (Sandbox Code Playgroud)

服务游戏

@Autowired
    private DaoJuegoI iGames;

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

然后我得到这个回应..

在此处输入图片说明

而不是 OI 想要显示 id_game 。而不是 1 我想显示 score_home_team 。而不是 2 我想显示日期

希望可以有人帮帮我!

小智 5

实现此目的的一种方法是定义一个包含以下三个参数的新对象:

    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;
        } 
    }
Run Code Online (Sandbox Code Playgroud)

现在将您的 sql @Query 修改为 -

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

这可以解决您的问题。