我怎样才能添加参数到JPA查询,这将被JPA忽略?

wvt8vs2t  于 2022-12-29  发布在  Spring
关注(0)|答案(1)|浏览(119)

有一个可选的缓存查询结果的想法:

public interface SomethingRepository extends PagingAndSortingRepository<Something, String>
@Cacheable(value = "listOfSomething", cacheManager = "somethingCacheManager",
unless = "#cacheResults == true")
List<Something> findAllOrderByNameAsc(@Param("ignore") boolean cacheResults);

但我得到(带或不带@Param):

java.util.NoSuchElementException: null
    at java.util.ArrayList$Itr.next(ArrayList.java:864)
    at java.util.Collections$UnmodifiableCollection$1.next(Collections.java:1044)
    at org.springframework.data.jpa.repository.query.CriteriaQueryParameterBinder.bind(CriteriaQueryParameterBinder.java:65)

如何添加将被JPA忽略的参数?

gcuhipw9

gcuhipw91#

这不是一个问题,而是我为解决问题而实现的一种变通方法-使用JPA特性(它忽略FIND和下一个保留字之间的字)在存储库中创建两个方法,并根据标志调用不同的方法

List<Something> findAllOrderByNameAsc();

@Cacheable(value = "listOfSomething", cacheManager = "somethingCacheManager",
unless = "#cacheResults == true")
List<Something> findCachedAllOrderByNameAsc();

相关问题