jpql查询中列的别名

时间:2014-12-02 22:10:56

标签: java spring jpa

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

这里有一些代码

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 个答案:

答案 0 :(得分:3)

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

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

这解决了您的问题。