我有一个映射到自定义对象的查询:
@Query("SELECT new com.mypackage.CmcXml(c.nom, c.prenom, c.genre "+
"FROM Cmc c")
List<CmcXml> getExportCmc();
所以我得到了这样的结果:
{"NOM1", "PRENOM1", "GENRE1"},
{"NOM2", "PRENOM2", "GENRE2"},
{"NOM3", "PRENOM3", "GENRE3"}
我希望有一个在获取数据时递增的计数器:
@Query("SELECT new com.mypackage.CmcXml(myCounter, c.nom, c.prenom, c.genre "+
"FROM Cmc c")
List<CmcXml> getExportCmc();
我想要的结果:
{1, "NOM1", "PRENOM1", "GENRE1"},
{2, "NOM2", "PRENOM2", "GENRE2"},
{3, "NOM3", "PRENOM3", "GENRE3"}
是否可以在@Query中执行此操作,还是必须在请求后浏览所有列表?
答案 0 :(得分:1)
否,jpa / hibernate中不支持行号。您必须使用本机查询。
答案 1 :(得分:0)
这在JPA中是不可能的,因为JPA对实体起作用,并且实体又映射到数据库中的表。行号与结果集相对应,实际上不在数据库表中。
您可以尝试以下操作,具体取决于您的数据库。
SELECT @rownumber\\:=@rownumber+1 as rownumber, column From Table
或者正如JB Nizet在评论中建议的那样,您可以使用自己的逻辑将这些对象映射到带有计数器的对象。