为什么查询会因为 var 而返回错误?

Why is the query returning and error because of the var?

@Repository
public interface StockRepo extends JpaRepository<Stock, Long> {

    @Query("SELECT stock " +
            "FROM Stock stock " +
            "WHERE stock.name = :name AND stock.date = :date AND stock.id != :id")
    Optional<Stock> findByStockUpdate(String name, LocalDate date, Long id);
}

因此,使用此存储库,当 运行 应用程序时出现一些错误:

无法解析 属性:名称:com.santanderdevweek.bootcamp.model.Stock [SELECT stock FROM com.santanderdevweek.bootcamp.model.Stock stock WHERE stock.name = :name AND stock.date = :date AND stock.id != :id]

无法解析 属性:名称:com.santanderdevweek.bootcamp.model.Stock [SELECT stock FROM com.santanderdevweek.bootcamp.model.Stock stock WHERE stock.name = :name AND stock.date = :date AND stock.id != :id]

查询验证失败方法 public 摘要 java.util.Optional com.santanderdevweek.bootcamp.repository.StockRepo.findByStockUpdate(java.lang.String,java.time.LocalDate,java.lang.Long)!

在 JpaRepositoriesRegistrar.EnableJpaRepositoriesConfiguration 上声明的 @EnableJpaRepositories 中定义的 com.santanderdevweek.bootcamp.repository.StockRepo 中定义的名称 'stockRepo' 创建 bean 时出错:调用 init 方法失败;嵌套异常是 java.lang.IllegalArgumentException:方法 public 抽象 java.util.Optional com.santanderdevweek.bootcamp.repository.StockRepo.findByStockUpdate(java.lang.String,java.time.LocalDate,java.lang.Long) 的查询验证失败!

都是因为查询(imo),需要帮助(抱歉久了post)。

因为您的实体 class 没有名称为 'name' 的字段,而是 'nameStock'。

在查询中将名称更改为 nameStock。

@Query("SELECT stock " +
            "FROM Stock stock " +
            "WHERE stock.nameStock = :nameStock AND stock.date = :date AND stock.id != :id")