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

spring jpa数据本机Sql查询出现问题

杨良才
2023-03-14

我的所有存储库都在扩展commonService存储库,而commonService存储库反过来也在扩展JpaRepository和JpaSpecification

public interface CommonReadRepository<T>
        extends JpaRepository<T, Long>, JpaSpecificationExecutor<T> {

我想在CommonReadRepository中定义原生Sql查询,如:mysql:select*from table limit 1,20;

@Query(value=“Select*from?1 limit?2,?3”,nativeQuery=true)

 List<?> customFindQuery(String tableName,int offset,int limit);

但我收到了SqlGrammerException,不幸的是,我没有在文档中找到关于语法的太多信息。

我知道如果我可以定义存储库中的查询,那么我知道表名,但是否可能使它通用?

谢谢

共有1个答案

龙珂
2023-03-14

在spring数据参考中定义的基本存储库部分

遵循参考文献中定义的指导原则,如下所示:

@NoRepositoryBean
interface CommonReadRepository<T, ID extends Serializable> extends JpaRepository<T, ID> {

  List<T> custonFindQuery();
}
@Repository
interface UserRepository extends CommonReadRepository<User, Long> {
  User findByEmailAddress(EmailAddress emailAddress);
}

对于特定查询列表<?>customFindQuery(字符串表名、int偏移量、int限制);

jparepository中已经通过调用以下方法支持它:

Page<T> findAll(Pageable pageable)

例如:

Page<User> all = userRepository .findAll(new PageRequest(3, 10));

其中offest=30(3 x 10),极限=10

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

  • 是我的服务方式 } 2018-10-04 17:15:44.452 WARN 64056---[nio-8080-exec-4]O.s.web.servlet.PageNotFound:不支持请求方法“Post”2018-10-04 17:15:44.452 WARN 64056---[nio-8080-exec-4].w.s.m.s.DefaultHandlerExceptionResolver

  • 使用HiberNate从表中检索整数值,发生以下异常, java.lang.ClassCastException:java.lang.Integer 不能强制转换为 pojo。数据集状态 Pojo类格式, 如果有任何解决此问题的建议

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

  • 本节将学习如何从SQL Server数据库查询数据。从一个简单的查询开始,查询语句用于从单个或多个表中检索数据。 SQL是一种特殊目的的编程语言,它是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。SQL语句无论是种类还是数量都是繁多的,很多语句也是经常要用到的,SQL查询语句就是一个典型的例子,无论是高级查询还是低级查询,SQL查询语

  • 我使用Spring引导和Spring数据JPA。它工作得很好但是!我需要使用复杂的本地查询从Oracle数据库(源数据从SAP ERP)。 假设查询包含5个joned表(一个键或组合键)。我可以使用很多参数。 解决方案: 1)由于耗时,使用JPA为该查询编写新查询是不真实的。创建表之间的所有键关系似乎很复杂。 2)为了运行这些查询,我使用JDBC。这很容易,因为我准备了本机查询。但我深信这种做法是