记录 @Query 报错Validation failed for query for method public abstract

博客指出查询只想要两个返回参数时会报错,原因是JPA默认返回对象,即便对象中只有对应查询的两个参数。若想以List<Map>格式返回,开启本机查询即可解决问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

代码



当查询只想要两个返回参数的时候报错

 

Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'articleTest': Unsatisfied dependency expressed through field 'articleService'; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'articleServiceImpl': Unsatisfied dependency expressed through field 'baseRepository'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'articleRepository': Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Validation failed for query for method public abstract 

原因是因为jpa 这样查询默认返回时对象 当然对象中只有对应查询的这两个参数

要想List<Map> 格式返回 只需要 这样既可

开启本机查询 这样就不会有问题了

/** * 根据产品的bianhao、订单号number和板材ID bancaiId搜索符合条件的订单集合。 * * @param bianhao 产品编号 * @param number 订单号 * @param bancaiId 板材ID * @return 符合条件的订单集合 */ @Query("SELECT d FROM Dingdan d " + "LEFT JOIN FETCH d.dingdan_chanpins dc " + "LEFT JOIN FETCH dc.chanpin c " + "LEFT JOIN FETCH d.dingdan_chanpins_zujians dz " + "LEFT JOIN FETCH dz.bancai b " + "WHERE (c.bianhao = :bianhao OR :bianhao IS NULL) " + "AND (d.number = :number OR :number IS NULL) " + "AND (b.id = :bancaiId OR :bancaiId IS NULL)") List<Dingdan> findByCriteria( @Param("bianhao") String bianhao, @Param("number") String number, @Param("bancaiId") Integer bancaiId); org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'dingdanService': Unsatisfied dependency expressed through field 'dingdanRepository'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dingdanRepository' defined in com.kucun.dataDo.DingdanRepository defined in @EnableJpaRepositories declared on JpaRepositoriesRegistrar.EnableJpaRepositoriesConfiguration: Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Validation failed for query for method public abstract java.util.List com.kucun.dataDo.DingdanRepository.findByCriteria(java.lang.String,java.lang.String,java.lang.Integer)! at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.resolveFieldValue(AutowiredAnnotationBeanPostProcessor.java:660) ~[spring-beans-5.2.15.RELEASE.jar:5.2.15.RELEASE] at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:640) ~[spring-beans-5.2.15.RELEASE.jar:5.2.15.RELEASE] at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:119) ~[spring-beans-5.2.15.RELEASE.jar:5.2.15.RELEASE]
06-07
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值