当前位置: 首页 > 知识库问答 >
问题:

@查询注释不读取本机sql选择*Spring数据

孔才
2023-03-14
public interface ConsumerRepository extends CrudRepository<Consumer, Long>  {

    List<Consumer> findByLastName(String lastName);
    List<Consumer> findByFirstName(String firstName);

    //List<Consumer> readExistsFirstName(String firstName);
    //List<Consumer> getByFirstNameAndLastNameOrderByFirstName();
    //Collection<Consumer> findById(Long id);
    @Query("select c from Consumer as c where c.firstName like '%?1%'")
    Collection<Consumer> findByNameContains(String word);

    @Query(value = "SELECT ppc_consumer FROM ppc_consumer WHERE lastname = ?1",
            countQuery = "SELECT count(*) FROM ppc_consumer WHERE lastname = ?1",
            nativeQuery = true)
    Page<Consumer> findByLastname(String lastname, Pageable pageable);
 }

但是显示错误“Distinc expected”,是因为我在@Query注释中使用了*而得到的吗?请问怎么了?

共有2个答案

雷晋
2023-03-14

让我们按照下面的例子做-

@Query(value = "SELECT * FROM consumer WHERE lastname = :lastName  LIMIT :maxRecord", nativeQuery = true)
StickerProduct findWalletProduct(@Param("lastName") String lastName, @Param("maxRecord") Long maxRecord);

用另一种方法来代替*:

@Query(value = "SELECT c FROM consumer c WHERE lastname = :lastName  LIMIT :maxRecord", nativeQuery = true)
StickerProduct findWalletProduct(@Param("lastName") String lastName, @Param("maxRecord") Long maxRecord);

我希望它能起作用。谢谢

田普松
2023-03-14

你不能使用*在spring jpa中,你必须使用别名。试着这样做:

@Query(value = "SELECT ppc FROM ppc_consumer ppc WHERE ppc.lastname = ?1",
            countQuery = "SELECT count(ppc) FROM ppc_consumer ppc WHERE ppc.lastname = ?1")

有关更多信息,请参见此问题

Spring Data JPA是否有任何方法使用方法名解析来计算实体?

 类似资料:
  • 我使用注释和注释执行查询,并从数据库表中删除记录。 错误: xxx的例外。xxx。xx,原因='javax。坚持不懈TransactionRequiredException:执行更新/删除查询“和异常=”执行更新/删除查询;嵌套的异常是javax。坚持不懈TransactionRequiredException:执行更新/删除查询'

  • 我对Spring中的原生查询有一个问题。我在param value中使用了带有参数nativequery=true注释@query和SQL查询。 而在RezerWacjamanager.java中: 问题是什么时候调用方法RezerWacjadao.getDoStepnosCnatypy(dataOd,dataDo)并执行此查询。我得到一个错误错误: DoStepNosCtypyListdTo.j

  • 我的服务是这样的: 存储库: 当尝试执行时。它返回“查询没有返回结果”,Hibernate SQL调试器表示只有第1个查询有效。“Hibernate:创建或替换view camera_layout AS select layout_id,unnest(layout.camera_ids)AS camera_id from layout”其余部分分解,尽管它们应该能帮助我,但我还是提前感谢

  • 我们可以将. sql文件传递或输入到Spring JPA中的查询注释吗? 类似这样的@Query(文件:/sql/employeeList.sql,nativeQuery=true) /sql/employeeList。sql-我想把这个文件放在代码中的某个地方,其中包含select sql。 我不希望有原生sql字符串@查询(“选择abc….”,nativeQuery=true)--我不想这样使

  • 我的所有存储库都在扩展commonService存储库,而commonService存储库反过来也在扩展JpaRepository和JpaSpecification 我想在CommonReadRepository中定义原生Sql查询,如:mysql:select*from table limit 1,20; @Query(value=“Select*from?1 limit?2,?3”,nativ

  • 我试图在elasticsearch spring数据中使用@query annotation来进行复杂的查询,但当我尝试下面的简单查询时,我得到了一个错误 堆栈跟踪