?1"- 那是什么?-6ren"> ?1"- 那是什么?-我是 spring 的新手,快速学习了几天,需要修复我工作场所的旧服务。 我有一个 JPA 存储库,一些带有 @Query 的方法在其中包含这个奇怪的 > ?1。 看起来像这样: @Repositor-6ren">
gpt4 book ai didi

java - "SELECT... WHERE column > ?1"- 那是什么?

转载 作者:行者123 更新时间:2023-11-30 07:40:35 26 4
gpt4 key购买 nike

我是 spring 的新手,快速学习了几天,需要修复我工作场所的旧服务。

我有一个 JPA 存储库,一些带有 @Query 的方法在其中包含这个奇怪的 > ?1

看起来像这样:

@Repository
public interface LeadsRepository extends JpaRepository<LeadEntity, Long>
{

@Query(value = "select /*long query*/ where p.acceptedAt > ?1 and
p.acceptedAt < ?2", nativeQuery = true)
Stream<LeadEntity> findPendingPackages(date begin, date end);
}

这是什么意思?它怎么可能同时选择 >1 和 <2 ?它应该什么都不选择......

P.S - 我也是一个 SQL 新手所以对我放轻松 :)

最佳答案

@Query(value = "select /*long query*/ where p.acceptedAt > ?1 and 
p.acceptedAt < ?2", nativeQuery = true)
Stream<LeadEntity> findPendingPackages(date begin, date end);

这意味着 ?1 引用方法的第一个参数 => date begin

?2 指的是第二个参数 date end 等等 ...

所以 findPendingPackages 应该返回它们的 acceptedAt 日期在 date begindate end 之间的所有包。 p>

因此您可以使用 ? 传递 SQl 参数,并且您必须遵守方法中参数的数量和顺序

参见 here in doc了解更多信息

您还可以使用命名参数,例如:paramname,如果您有很多参数要发送,则可以防止排序错误或数字,例如您的查询将是

@Query(value = "select /*long query*/ where p.acceptedAt > :begin and 
p.acceptedAt < :end", nativeQuery = true)
Stream<LeadEntity> findPendingPackages(@Param("begin") date begin,@Param("end") date end);

关于java - "SELECT... WHERE column > ?1"- 那是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57594646/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com