【问题标题】:%Like% Query in spring JpaRepositoryn [duplicate]春季JpaRepositoryn中的%Like%查询[重复]
【发布时间】:2023-03-25 23:12:01
【问题描述】:

我想在 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);

【问题讨论】:

  • 你应该在值的开头和/或结尾使用%,而不是在函数的参数中
  • @NickAth 感谢您的回复我已经尝试过没有运气
  • @NickAth 现在我收到此错误“ORA-00909: invalid number of arguments”
  • 正如@ayrton 非常正确地提到的那样,您没有将“%”放在正确的位置。尝试代替 TO_DATE(TO_CHAR(TO_DATE(:%strtDt%,'YYYY-MM-DD'),'MM/DD/YYYY'),'MM/DD/YYYY') 添加这个 LIKE CONCAT('%', CONCAT (TO_DATE(:strtDt, 'YYYY-MM-DD'),'%') ) concat函数接受两个参数
  • 你的查询很奇怪。你应该问一个关于你想查询什么的问题,我认为使用标准的 Oracle 日期函数可以更轻松、更健壮地完成,而不是使用字符串。

标签: java sql hibernate spring-data-jpa


【解决方案1】:

请尝试:

 /* 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 参数和STRT_DT 列的“日期相等”(仅年月日部分)过滤查询。

【讨论】:

  • 仍然没有返回任何东西
  • ..那么祝你好运! (您在该查询中有 6 个(INNER!)joins)
  • 当我在 where 子句中执行没有 STRT_DT 的脚本时,它与其他 where 子句一起成功执行时,我有点惊讶。
  • 也许您应该指定您的意思是哪个STRT_DT(查询中的别名:B., C., GRR....?)
  • 我指定但没有运气
猜你喜欢
  • 1970-01-01
  • 2015-10-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-16
相关资源
最近更新 更多