【发布时间】: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