我在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();
}
然后我得到了这个回复..
而不是O我想显示id_game。 而不是1我想显示score_home_team。 而不是2我想显示日期
希望有人可以帮助我!
答案 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();
这解决了您的问题。