Java jpql查询中列的别名
我在使用SpringJPA的Restful项目中工作,所以我使用@Query注释。我想知道如何为查询中的列设置别名?因为响应将结果集的每个寄存器显示为数组0,1,2,而不是数组0,1,2,所以我希望显示要使用别名设置的自定义名称 这里有一些代码 DaoGameI.javaJava jpql查询中列的别名,java,spring,jpa,Java,Spring,Jpa,我在使用SpringJPA的Restful项目中工作,所以我使用@Query注释。我想知道如何为查询中的列设置别名?因为响应将结果集的每个寄存器显示为数组0,1,2,而不是数组0,1,2,所以我希望显示要使用别名设置的自定义名称 这里有一些代码 DaoGameI.java public interface DaoGameI extends JpaRepository<Game, Integer> { @Query("SELECT g.id AS id_game, g.sco
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();
}
@Autowired
private DaoJuegoI iGames;
@RequestMapping(value="/all")
public @ResponseBody List<Game> all(){
return iGame.allGames();
}
公共接口DaoGameI扩展了JpaRepository{
@查询(“选择g.id作为id\U游戏,选择g.scoreHomeTeam作为得分\U主场\U团队,选择g.date作为游戏\U日期”
“来自游戏g”
)
公开列出所有游戏();
}
ServiceGame.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();
}
@Autowired
private DaoJuegoI iGames;
@RequestMapping(value="/all")
public @ResponseBody List<Game> all(){
return iGame.allGames();
}
@Autowired
私人道觉阁;
@请求映射(value=“/all”)
public@ResponseBody列出所有(){
返回iGame.allGames();
}
然后我得到了这个回答
我想显示id_游戏,而不是O。
我想显示的不是1,而是主场球队的得分。
我想显示日期,而不是2
希望有人能帮助我 实现这一点的一种方法是定义一个包含以下三个参数的新对象:
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("SELECT NEW GameResponse(g.id, g.scoreHomeTeam, g.date) FROM Game g")
public List<Game> allGames();
@Query(“从游戏g中选择新游戏响应(g.id、g.scoreHomeTeam、g.date))
公开列出所有游戏();
这就解决了您的问题。实现这一点的一种方法是定义一个包含以下三个参数的新对象:
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("SELECT NEW GameResponse(g.id, g.scoreHomeTeam, g.date) FROM Game g")
public List<Game> allGames();
@Query(“从游戏g中选择新游戏响应(g.id、g.scoreHomeTeam、g.date))
公开列出所有游戏();
这就解决了您的问题。您使用的查询强制JPA返回数组集合,因此,如果需要,您可以将其转换为所需的形式。为什么不选择g实例而不是所选属性,并将游戏实例转换为JSON?因为在这种情况下,我需要一些属性,我认为有一种方法可以转换JSON实例中的属性。。感谢您的回答@christ您正在使用forcesjpa返回数组集合的查询,因此,如果需要,您可以将其转换为所需的形式。为什么不选择g实例而不是所选属性,并将游戏实例转换为JSON?因为在这种情况下,我需要一些属性,我认为有一种方法可以转换JSON实例中的属性。。谢谢你的回答@Chris