Spring Data JPA自定义JPQL查询无法解析Stock实体name属性报错
问题排查方案
- 首先检查
com.santanderdevweek.bootcamp.model.Stock实体类的字段定义报错核心提示是无法解析
name属性,首先确认实体类中是否存在名为name的字段,注意JPQL使用的是实体类的Java字段名,不是数据库表的列名,如果数据库列名是name但实体类字段命名为stockName,则需要将JPQL中的stock.name改为stock.stockName。
同时确认该字段是否添加了对应的getter方法,如果你用lombok,检查是否加了@Data/@Getter注解,没有getter方法Hibernate也无法识别属性。 - 检查实体类的注解配置
确认Stock类上添加了@Entity注解,没有导错其他同名的Stock类。如果项目中存在多个同名的Stock类,建议在JPQL中写全限定类名:@Query("SELECT stock " + "FROM com.santanderdevweek.bootcamp.model.Stock stock " + "WHERE stock.name = :name AND stock.date = :date AND stock.id != :id") - 检查方法参数的绑定配置
低版本的Spring Data JPA不支持默认按参数名绑定命名参数,建议给每个方法参数加上@Param注解显式绑定:@Query("SELECT stock " + "FROM Stock stock " + "WHERE stock.name = :name AND stock.date = :date AND stock.id != :id") Optional<Stock> findByStockUpdate(@Param("name") String name, @Param("date") LocalDate date, @Param("id") Long id);
内容的提问来源于stack exchange,提问作者Hugo Porfirio
相关产品推荐
相关产品推荐

