我刚到春天,很快就学习了几天,并且需要在工作场所修复旧服务。
我有一个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新手,所以对我容易:)
答案 0 :(得分:3)
@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 begin
和date end
之间的所有软件包
因此您可以使用?
传递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);