java web 2023-05-15 09:54 采纳率: 0%
浏览 36

将springboot从1.5.14升级到2.7.9后,启动报nullPointException异常

问题:最近将springboot从1.5.14升级到2.7.9后,启动报nullPointException异常,尝试过将sql语句表名改为实体名,字段值改为属性值,重新启动任然报该异常。


Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'orderInfoDao' defined in com.kmair.transfer.dao.OrderInfoDao defined in @EnableJpaRepositories declared on JpaRepositoriesRegistrar.EnableJpaRepositoriesConfiguration: Invocation of init method failed; nested exception is org.springframework.data.repository.query.QueryCreationException: Could not create query for public abstract void com.kmair.transfer.dao.OrderInfoDao.cancelOrder(java.lang.String); Reason: null; nested exception is java.lang.NullPointerException
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1804)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:620)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542)
    at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208)
    at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:276)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1391)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1311)
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.resolveFieldValue(AutowiredAnnotationBeanPostProcessor.java:657)
    ... 175 more
Caused by: org.springframework.data.repository.query.QueryCreationException: Could not create query for public abstract void com.kmair.transfer.dao.OrderInfoDao.cancelOrder(java.lang.String); Reason: null; nested exception is java.lang.NullPointerException
    at org.springframework.data.repository.query.QueryCreationException.create(QueryCreationException.java:101)
    at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.lookupQuery(QueryExecutorMethodInterceptor.java:107)
    at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.lambda$mapMethodsToQuery$1(QueryExecutorMethodInterceptor.java:95)
    at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
    at java.util.Iterator.forEachRemaining(Iterator.java:116)
    at java.util.Collections$UnmodifiableCollection$1.forEachRemaining(Collections.java:1049)
    at java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801)
    at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
    at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708)
    at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:499)
    at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.mapMethodsToQuery(QueryExecutorMethodInterceptor.java:97)
    at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.lambda$new$0(QueryExecutorMethodInterceptor.java:87)
    at java.util.Optional.map(Optional.java:215)
    at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.<init>(QueryExecutorMethodInterceptor.java:87)
    at org.springframework.data.repository.core.support.RepositoryFactorySupport.getRepository(RepositoryFactorySupport.java:365)
    at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.lambda$afterPropertiesSet$5(RepositoryFactoryBeanSupport.java:323)
    at org.springframework.data.util.Lazy.getNullable(Lazy.java:231)
    at org.springframework.data.util.Lazy.get(Lazy.java:115)
    at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.afterPropertiesSet(RepositoryFactoryBeanSupport.java:329)
    at org.springframework.data.jpa.repository.support.JpaRepositoryFactoryBean.afterPropertiesSet(JpaRepositoryFactoryBean.java:144)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1863)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1800)
    ... 185 more
Caused by: java.lang.NullPointerException
    at org.springframework.data.jpa.repository.query.QueryUtils.createCountQueryFor(QueryUtils.java:607)
    at org.springframework.data.jpa.repository.query.DefaultQueryEnhancer.createCountQueryFor(DefaultQueryEnhancer.java:49)
    at org.springframework.data.jpa.repository.query.StringQuery.deriveCountQuery(StringQuery.java:119)
    at org.springframework.data.jpa.repository.query.AbstractStringBasedJpaQuery.<init>(AbstractStringBasedJpaQuery.java:72)
    at org.springframework.data.jpa.repository.query.NativeJpaQuery.<init>(NativeJpaQuery.java:53)
    at org.springframework.data.jpa.repository.query.JpaQueryFactory.fromMethodWithQueryString(JpaQueryFactory.java:51)
    at org.springframework.data.jpa.repository.query.JpaQueryLookupStrategy$DeclaredQueryLookupStrategy.resolveQuery(JpaQueryLookupStrategy.java:169)
    at org.springframework.data.jpa.repository.query.JpaQueryLookupStrategy$CreateIfNotFoundQueryLookupStrategy.resolveQuery(JpaQueryLookupStrategy.java:253)
    at org.springframework.data.jpa.repository.query.JpaQueryLookupStrategy$AbstractQueryLookupStrategy.resolveQuery(JpaQueryLookupStrategy.java:93)
    at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.lookupQuery(QueryExecutorMethodInterceptor.java:103)
    ... 207 more
 

    @Transactional(rollbackFor = Exception.class)
    @Modifying
    @Query(value = " update tf_order_info oi,tf_order_accompany oa  set oi.order_status='3',oa.order_status='3' where oi.order_id=?1 and oi.order_id = oa.order_id ", nativeQuery = true)
    void cancelOrder(String orderId);
 
@Entity
@Table(name = "tf_order_info")
public class OrderInfo implements Serializable {
    private static final long serialVersionUID = 1L;
    /**
     * 订单ID 主键
     */
    @Id
    private String orderId;
...
 
@Entity
@Table(name = "tf_order_accompany")
public class OrderAccompany implements Serializable {
    private static final long serialVersionUID = 1L;
    /**
     * ID主键
     */
    @Id
    private String id;
  • 写回答

4条回答 默认 最新

  • Leodong. 2023-05-15 10:05
    关注

    该回答通过自己思路及引用到GPTᴼᴾᴱᴺᴬᴵ搜索,得到内容具体如下:
    根据报错信息,您的问题似乎是由于在JPA查询中使用了空的查询字符串(null pointer exception)而引起的。在错误消息中,可以看到NullPointerException是在QueryUtils.createCountQueryFor()中引发的,该方法是Spring Data JPA用于创建计数查询的内部方法。

    在升级Spring Boot版本后,可能会有一些JPA查询的API有所更改,因此可能需要更新您的查询以适应新版本。更改的一种可能是@Query注释的语法。您可以尝试将你的查询语句改为如下形式:

    @Modifying
    @Query("update OrderInfo oi set oi.orderStatus = '3' where oi.orderId = ?1")
    void cancelOrder(String orderId);
    

    如果您需要更新两个表中的记录,可以使用JPA的内置支持来完成这个操作,而不是使用原生SQL查询。例如:

    @Modifying
    @Query("update OrderInfo oi, OrderAccompany oa set oi.orderStatus = '3', oa.orderStatus = '3' where oi.orderId = oa.orderId and oi.orderId = ?1")
    void cancelOrder(String orderId);
    

    请注意,这两个查询都使用了“?1”参数占位符,这是Spring Data JPA的一种查询语法,用于保护您的应用程序免受SQL注入攻击。

    希望这些信息可以帮助您解决问题。如果您需要进一步的帮助,请提供更多的信息,例如代码的完整清单和堆栈跟踪信息。


    如果以上回答对您有所帮助,点击一下采纳该答案~谢谢

    评论

报告相同问题?

问题事件

  • 创建了问题 5月15日

悬赏问题

  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥170 如图所示配置eNSP
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改
  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上