Jpa Spring数据:如何与@Query一起进行分页?(界面投影)
我正在处理2.0.6.0版本的Spring数据 我对以下关于分页和投影的内容感到困惑 域类名为Persona,使用lombok工作,并使用JPA@Entity等进行注释 关于投影,我有以下几点:Jpa Spring数据:如何与@Query一起进行分页?(界面投影),jpa,spring-data,spring-data-jpa,Jpa,Spring Data,Spring Data Jpa,我正在处理2.0.6.0版本的Spring数据 我对以下关于分页和投影的内容感到困惑 域类名为Persona,使用lombok工作,并使用JPA@Entity等进行注释 关于投影,我有以下几点: public interface PersonaProjection { String getId(); String getNombre(); String getApellido(); Date getFecha(); } 关于存储库,我有以下内容: inter
public interface PersonaProjection {
String getId();
String getNombre();
String getApellido();
Date getFecha();
}
关于存储库,我有以下内容:
interface PersonaDataJpaCrudRepository extends PagingAndSortingRepository<Persona, String> {
Page<PersonaProjection> findAllProjectedBy(Pageable pageable);
}
@Query("SELECT p.id, p.nombre, p.apellido, p.fecha FROM Persona p")
Page<PersonaProjection> findAllProjectedBy(Pageable pageable);
该视图基于Thymeleaf,并显示了预期的数据
事实上,从三天前开始,我就在从事以下工作:
interface PersonaDataJpaCrudRepository extends PagingAndSortingRepository<Persona, String> {
Page<PersonaProjection> findAllProjectedBy(Pageable pageable);
}
@Query("SELECT p.id, p.nombre, p.apellido, p.fecha FROM Persona p")
Page<PersonaProjection> findAllProjectedBy(Pageable pageable);
上面显示的前三天的输出显示了是否添加了查询
在做了一项研究之后,我发现这门课的例子如下:
其方法如下:
/**
* Projection interfaces can be used with manually declared queries, too. Make sure you alias the projects matching
* the projection fields.
*
* @return
*/
@Query("select c.firstname as firstname, c.lastname as lastname from Customer c")
Collection<CustomerProjection> findsByProjectedColumns();
请注意以下注意事项:
确保为与投影字段匹配的项目设置别名
因此,如果我使用:
@Query("SELECT p.id as id, p.nombre as nombre, p.apellido as apellido, p.fecha as fecha FROM Persona p")
Page<PersonaProjection> findAllProjectedBy(Pageable pageable);
工作,但观察是多余的,它表明别名与字段名相同
因此,有以下问题:
为什么第一个@Query版本在几天前可以使用,现在不行了?。这是我最大的困惑。我假设涉及com.sun.proxy.$Proxy84实例
为什么在@Query中必须使用此别名?本节没有对其进行记录,更没有显示接口投影与@Query一起工作的示例
几天前您是否更改了基础数据库?是和否,架构没有任何变化,只是添加或插入了大约100条伪造记录。原来是5张唱片,现在是107张。为了测试关于Pagination的视图,我指的是db的版本,不同的db,您使用H2进行了测试,现在您切换到了普通db或类似的东西。所有这些都是在运行时使用MySQL,我通过web浏览器手动与web应用交互。使用H2进行测试。但是这种情况只反映在视图中,在视图中预期的数据没有出现,html页面的那部分显示为空白或没有数据,关于分页、记录量等的其余数据正常出现。因此,所有关于代理数据的信息都不会显示在视图中。