Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.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
Jpa Spring数据:如何与@Query一起进行分页?(界面投影)_Jpa_Spring Data_Spring Data Jpa - Fatal编程技术网

Jpa Spring数据:如何与@Query一起进行分页?(界面投影)

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

我正在处理2.0.6.0版本的Spring数据

我对以下关于分页和投影的内容感到困惑

域类名为Persona,使用lombok工作,并使用JPA@Entity等进行注释

关于投影,我有以下几点:

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页面的那部分显示为空白或没有数据,关于分页、记录量等的其余数据正常出现。因此,所有关于代理数据的信息都不会显示在视图中。