wal*_*ker 2 java sql db2 spring-data-jpa spring-boot
给出了以下查询以针对 DB2 数据库运行,但它在我的 Spring Boot 应用程序中返回以下错误。
我已经研究过:COL_1_1001应该是某种命名参数或宿主变量(DB2),但无法找到我正在尝试做的类似示例。我只曾经用来?1设置一个参数@Query,据我所知,它用于 JPQL。由于我在这里尝试本地 SQL 查询,因此不确定这是否可行。
@Repository
public interface SomeRepository extends JpaRepository<Entity, EntityID> {
@Query(value="SELECT COL_1"
+ ",COL_2"
+ ",COL_3"
+ "FROM TABLE_A"
+ "WHERE COL_1 = :COL_1_1001", nativeQuery = true)
List<Entity> getEntityDetails();
}
Run Code Online (Sandbox Code Playgroud)
[ERROR]~2019-09-19-07.26.30.347CDT~~~~~ oaccC[.[.[.[dispatcherServlet] Servlet.service() for servlet [dispatcherServlet] in context with path [] 抛出异常 [Request processing]失败的; 嵌套异常是 org.springframework.dao.InvalidDataAccessResourceUsageException: Named parameter not bound : COL; 嵌套异常是 org.hibernate.QueryException: Named parameter not bound : COL] 与根本原因 org.hibernate.QueryException: Named parameter not bound : COL
您COL_1_1001在查询中使用变量但不提供它。您必须添加一个带有注释的参数,@Param以便可以将值注入到查询中。
改变:
@Query(value="SELECT COL_1"
+ ",COL_2"
+ ",COL_3"
+ "FROM TABLE_A"
+ "WHERE COL_1 = :COL_1_1001", nativeQuery = true)
List<Entity> getEntityDetails();
Run Code Online (Sandbox Code Playgroud)
到:
@Query(value="SELECT COL_1"
+ ",COL_2"
+ ",COL_3"
+ "FROM TABLE_A"
+ "WHERE COL_1 = :col", nativeQuery = true)
List<Entity> getEntityDetails(@Param("col") String col); // it may not be a string - use the actual tyle of COL_1
Run Code Online (Sandbox Code Playgroud)
有关更多信息,请查看Spring Data 文档
| 归档时间: |
|
| 查看次数: |
5680 次 |
| 最近记录: |