Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java jpql查询中列的别名_Java_Spring_Jpa - Fatal编程技术网

Java jpql查询中列的别名

Java 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

我在使用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.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