JPQL自定义查询以使用ExampleMatcher和Pageable检索数据

时间:2019-03-05 06:22:28

标签: java hibernate spring-data-jpa repository jpql

如何使用ExampleMatcher使用JPQL自定义查询?

我正在尝试从父母的大小中检索孩子。 由于不允许在孩子方面添加其他方法。

我需要过滤和分页来显示子项,因为子项包含很多行数据。

这是我的存储库。

@Repository
public interface ParentRepository extends JpaRepository<Parent, String> {

    @Query(value = "SELECT c FROM Child c where c.parent.id =:id")  
    public List<Child> findChildById(String id, Example example, Pageable pageable);

}

注意:如果没有示例并且可以作为参数进行分页,则此查询可以正常工作。

该方法给我一个错误:

    Error creating bean with name 'parentRepository': 
        Invocation of init method failed; nested exception is java.lang.IllegalStateException: 
        Using named parameters for method public abstract java.util.List com.example.test.ParentRepository
.findChildById(java.lang.String,org.hibernate.criterion.Example,org.springframework.data.domain.Pageable) 
        but parameter 'Optional[example]' not found in annotated query 
        'SELECT c FROM Child c where c.parent.id =:id'!

1 个答案:

答案 0 :(得分:1)

您应在查询中使用传递给带有@Query注释的方法的参数,在您的示例中,该参数应类似于以下内容:

@Query(value = "SELECT c FROM Child c where c.parent.id =:id")  
public List<Child> findChildById(@Param("id") String id);