首页 > 解决方案 > Spring JpaRepositoryn 中的 %Like% 查询

问题描述

我想在 JpaRepository 中写一个类似的查询,但它没有返回任何东西。

这是我的代码:

@Query(value = "select * from DC_NOTIF_EVNT_ORG_CONFIG C JOIN DC_NOTIF_EVNT_ORG_PERS B ON 

    B.NOTIF_EVNT_ORG_CONFIG_ID=C.NOTIF_EVNT_ORG_CONFIG_ID JOIN GRR_PARTY GRR ON GRR.PERS_ID =B.PERS_ID JOIN DC_NOTIF_EVNT_CONFIG D ON C.NOTIF_EVNT_CONFIG_ID=D.NOTIF_EVNT_CONFIG_ID JOIN DC_SCHED_FREQ_CONFIG E ON E.SCHED_FREQ_CONFIG_ID= C.SCHED_FREQ_CONFIG_ID JOIN DC_NOTIF_EVNT_SCHED F ON F.NOTIF_EVNT_SCHED_ID=C.NOTIF_EVNT_SCHED_ID JOIN DC_ORG G ON C.ORG_ID=G.ORG_ID WHERE C.ORG_ID=:orgId AND GRR.PERS_ID=:persId  AND C.ACT_IND=1 AND STRT_DT LIKE TO_DATE(TO_CHAR(TO_DATE(:%strtDt%,'YYYY-MM-DD'),'MM/DD/YYYY'),'MM/DD/YYYY') AND ROWNUM<2",nativeQuery = true)

    List<Notlist> ifNotificationExist(@Param("orgId") Long orgId, @Param("persId") Long persId,@Param("strtDt") LocalDate strtDt);

标签: javasqlhibernatespring-data-jpa

解决方案


请试试:

 /* as before ...*/
to_char(STRT_DT, 'YYYY-MM-DD') LIKE '%'||to_char(:strtDt, 'YYYY-MM-DD')||'%' 
/*...*/

...我什至认为:

to_char(STRT_DT, 'YYYY-MM-DD') = to_char(:strtDt, 'YYYY-MM-DD')

..会很好!

自从:

... STRT_DT LIKE TO_DATE(TO_CHAR(TO_DATE(:%strtDt%,'YYYY-MM-DD'),'MM/DD/YYYY'),'MM/DD/YYYY') ...

很奇怪/奇怪!

假设:

  • 您在 oracle 数据库上。
  • :strDtjava.util.LocalDate输入变量。
  • STRT_DT是一个“日期类型”(DATE/DATETIME/TIMESTAMP)列。
  • :strtDt您想通过param 和STRT_DTcolumn的“日期相等”(仅年月日部分)过滤查询。

推荐阅读