首页 > 解决方案 > 无法使用 jpa 和粗存储库使我的 sql 查询正常工作,但可以正常工作

问题描述

我是新来的,我一直在为这个问题苦苦挣扎一个晚上,有人能帮我吗?

这是相关代码:https ://hasteb.in/esuhiluf.java

当我在像这样 https://hasteb.in/icopuxiq.sql这样的方案中进行纯 SQL 查询时, 它可以工作,但是当我将它添加到界面并将 var 名称更改为大写时,我无法让它工作,任何帮助将不胜感激:微笑:这是错误代码:创建名称为“productRepositories”的bean时出错:FactoryBean在创建对象时抛出异常;嵌套异常是

java.lang.IllegalArgumentException: Validation failed for the query for method public abstract java.util.List dev.rannem.storesql.repositories.ProductRepositories.getItemList(java.lang.Integer)!

标签: javamysqlspring-data-jpa

解决方案


首先:检查 CRUDRepository 是否最适合您尝试做的事情。我从 CRUDRepository 开始,然后切换到 JPARepository,它扩展了 CRUDRepository。

第二:我假设您的 tableattributes 来自正确的表 - 您的 SQL-Query 与您的 @Query-String 不匹配。

最后:尝试改变获取 id 的方式。

public interface ProductRepositories extends JPARepository<Product, Integer> {

@Query("select CartItem.product from Cart c join CartItem ci on ci.id = c.cartID join Cart.cartItems cci on c.cartID = cci.product.id where User.id = :id")
    List<Product> getItemList(Integer id);
}

编辑:您的 id 真的是整数吗?检查您的产品 - 它可能很“长”


推荐阅读