注册

达梦数据库,集成JPA,使用JPA的分页查询报错

Chaim 2023/07/16 1321 2

使用JPA分页查询时,每页10条数据,当总数据不超过10条时,查询没问题,当总数据超过10条时,就报错了,错误信息:

java.lang.NullPointerException: Cannot invoke "org.hibernate.query.sqm.function.SqmFunctionDescriptor.generateSqmExpression(org.hibernate.query.sqm.tree.SqmTypedNode, org.hibernate.query.ReturnableType, org.hibernate.query.spi.QueryEngine, org.hibernate.type.spi.TypeConfiguration)" because the return value of "org.hibernate.query.sqm.internal.SqmCriteriaNodeBuilder.getFunctionDescriptor(String)" is null
	at org.hibernate.query.sqm.internal.SqmCriteriaNodeBuilder.count(SqmCriteriaNodeBuilder.java:685)
	at org.hibernate.query.sqm.internal.SqmCriteriaNodeBuilder.count(SqmCriteriaNodeBuilder.java:153)
	at org.springframework.data.jpa.repository.support.SimpleJpaRepository.getCountQuery(SimpleJpaRepository.java:781)
	at org.springframework.data.jpa.repository.support.SimpleJpaRepository.lambda$readPage$3(SimpleJpaRepository.java:693)
	at org.springframework.data.support.PageableExecutionUtils.getPage(PageableExecutionUtils.java:63)
	at org.springframework.data.jpa.repository.support.SimpleJpaRepository.readPage(SimpleJpaRepository.java:692)
	at org.springframework.data.jpa.repository.support.SimpleJpaRepository.findAll(SimpleJpaRepository.java:474)
	at pers.mx.jupiter.jpa.repository.support.BaseRepositoryImpl.findAll(BaseRepositoryImpl.java:163)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:568)
	at org.springframework.data.repository.core.support.RepositoryMethodInvoker$RepositoryFragmentMethodInvoker.lambda$new$0(RepositoryMethodInvoker.java:288)
	at org.springframework.data.repository.core.support.RepositoryMethodInvoker.doInvoke(RepositoryMethodInvoker.java:136)
	at org.springframework.data.repository.core.support.RepositoryMethodInvoker.invoke(RepositoryMethodInvoker.java:120)
	at org.springframework.data.repository.core.support.RepositoryComposition$RepositoryFragments.invoke(RepositoryComposition.java:516)
	at org.springframework.data.repository.core.support.RepositoryComposition.invoke(RepositoryComposition.java:285)
	at org.springframework.data.repository.core.support.RepositoryFactorySupport$ImplementationMethodExecutionInterceptor.invoke(RepositoryFactorySupport.java:628)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184)
	at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.doInvoke(QueryExecutorMethodInterceptor.java:168)
	at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.invoke(QueryExecutorMethodInterceptor.java:143)

java代码:
controller层:

    public Page<ProjectOrder> page(@RequestBody PagingQueryParams<ProjectOrder> params) {
        params.fetch(ProjectOrder_.CUSTOMER);
        params.fetch(String.format("%s.%s", ProjectOrder_.PROJECT, Project_.PROJECT_CATEGORY));
        params.fetch(ProjectOrder_.ACCOUNT);
        return wechatProjectOrderService.page(params);
    }

service:

    @Override
    @Transactional(readOnly = true)
    public Page<ProjectOrder> page(PagingQueryParams<ProjectOrder> params) {
        return projectOrderRepository.findAll(params);
    }

gradle依赖:

implementation 'com.dameng:Dm8JdbcDriver18'
implementation 'com.dameng:DmDialect-for-hibernate5.3'
implementation 'com.alibaba:druid'

达梦驱动和方言版本:

dependency("com.dameng:Dm8JdbcDriver18:8.1.1.49")
dependency("com.dameng:DmDialect-for-hibernate5.3:8.1.1.49")

hibernate版本:

id 'org.hibernate.orm' version '6.1.7.Final'

很急,之前数据少没发现这个问题,现在数据多了就出现这个问题了,望各位大神解答一下

回答 0
暂无回答
扫一扫
联系客服