spring-boot - 带有参数的 Spring Boot JPA 出错
问题描述
//Repository class
@Repository
public interface FlowsPageRepository extends PagingAndSortingRepository<FlowsPageView, String> {
@Query(name = "select * from flows_page_view f where f.datepst between ?1 and ?2")
List<FlowsPageView> findScoresByDate(String startDate, String endDate);
}
//Controller class
@RestController
public class ApiController {
private final FlowsPageRepository flowsPageRepository;
@RequestMapping(path = "/api/scores/{startdate}/{enddate}")
public List<FlowsPageView> getScoresDataByDate(@PathVariable("startdate") String
startDate, @PathVariable("enddate") String endDate) {
return flowsPageRepository.findScoresByDate(startDate, endDate);
}
}
When I am trying to run this project I am getting the following error:
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'flowsPageRepository': Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Failed to create query for method public abstract java.util.List com.expedia.fcts.houston.FlowsPageRepository.findScoresByDate(java.lang.String,java.lang.String)! At least 2 parameter(s) provided but only 1 parameter(s) present in query.
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1745)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:576)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:498)
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:320)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
知道我在这里做错了什么吗?当我只使用像 startDate 这样的一个参数时,此代码运行良好,但当我添加 endDate 时,它给了我这个错误。对于这个用例,我正在尝试针对日期范围运行选择。
谢谢
解决方案
@Query
注释使用了错误的字段。Query#name
是否有指定命名查询。-Query#value
应该在您的情况下使用。
此外,默认情况下,查询值被解析为 JPQL。如果要使用 SQL,则需要指定Query#nativeQuery
为true
.
推荐阅读
- javascript - 制表符中的多选样式
- c - 是否可以在 Windows 上的 c-dll 中加载 go-dll?
- pdf - PDF24 保存垃圾 PDF
- javascript - 带有 Bootstrap 的 jsonforms:VerticalLayout 缺失
- ios - SwiftUI - GeometryReader 覆盖自定义转换
- typescript - 打字稿从接口获取键值
- javascript - ajax调用后Javascript不运行
- react-native - ListItem 未在 React Native 的 FlatList 中呈现
- typescript - 如何在 redux-toolkit 中使用persist/rehydrate?
- r - R ggplot2 geom_point 形状