Spring Boot请建议自定义查询

Posted

技术标签:

【中文标题】Spring Boot请建议自定义查询【英文标题】:SpringBoot please suggest custom Query for 【发布时间】:2017-11-17 07:33:02 【问题描述】:

select * from ngb.subsidy where (有效开始日期,有效结束日期)重叠 ('2017-08-01'::DATE, '2017-08-01'::DATE) 按有效开始日期 asc 排序

以下给定的查询不起作用

@Query(value="select * from ngb.security_deposit sd  where sd.consumer_no = :consumerNo and (sd.effective_start_date, sd.effective_end_date) OVERLAPS (:effectiveStartDate::DATE, :effectiveEndDate::DATE) order by sd.effective_start_date asc",nativeQuery=true)

public  List<SecurityDepositInterface> findByConsumerNoAndEffectiveStartDateAndEffectiveEndDate(@Param("consumerNo") String consumerNo, @Param("effectiveStartDate") Date effectiveStartDate, @Param("effectiveEndDate") Date effectiveEndDate);

显示 java.lang.IllegalArgumentException: 名为 [effectiveStartDate] 的参数不存在

【问题讨论】:

【参考方案1】:

在你的仓库中

 @Query(value="select * from ngb.subsidy where (effective_start_date, effective_end_date) OVERLAPS ('2017-08-01'::DATE, '2017-08-01'::DATE) order by effective_start_date asc",nativeQuery=true)

 List<Your Entity class> = findbyID(); // any name

【讨论】:

【参考方案2】:

不要使用@Param("") 而不是使用?1

例子

@Query(value="select * from table where colNO=?1 and colNO=?2",nativeQuery=true)
List<Your Entity class> = findbyID(String val1,String val2); 

【讨论】:

以上是关于Spring Boot请建议自定义查询的主要内容,如果未能解决你的问题,请参考以下文章

自定义订购 MSSQL 休眠 Spring Boot 2

Spring Boot Jpa框架自定义查询语句返回自定义实体

Spring Boot 自定义查询 MongoDB

在 Spring Boot 中编写自定义查询

是否可以在 Spring Boot 运行时构建自定义查询?

Spring Boot JPA中的自定义查询问题