我尝试获取具有多级过滤器的数据库表,它们不是必需的,但它们可能是列表。
@GetMapping("/export/")
public List<TS> getExport(
@RequestParam("type") String type,
@RequestParam(value="date1", required=false)String startDate,
@RequestParam(value="study", required=false) String study) throws ParseException{
...
我正在使用study.split(“,”)解析日期和拆分研究,并将所有研究都放在一个名为tsq的obj中,其中存在变量列表研究。返回时我运行这个:
return repoServ.getTSRepository().findAllBySpDateAndRest(tsq.getStartDate(), tsq.getStudies());
并且我具有此存储库功能和查询,以便在studyList为null时调用它并忽略它
@Query("Select t from TS t WHERE t.date= :date and (:studyList is null or t.study in :studyList)" )
public List<TS> findAllBySpDateAndRest(@Param("date")Date date,@Param("studyList") List<String> studyList);
我也将(:studyList)中的:studylist放在括号中,因为我发现语法正确,但错误仍然存在
@Query("Select t from TS t WHERE t.date= :date and (:studyList is null or t.study in (:studyList))" )
public List<TS> findAllBySpDateAndRest(@Param("date")Date date,@Param("studyList") List<String> studyList);
但是,由此我得到了一个意外的AST节点:{vector}
我收到此消息:
请求处理失败;嵌套的异常是org.springframework.dao.InvalidDataAccessApiUsageException:org.hibernate.hql.internal.ast.QuerySyntaxException:意外的AST节点:{vector} [从com.model.TS t中选择t,在t.date =:date和(: studyList_0,:studyList_1为null或t.study IN(:studyList_0,:studyList_1))];嵌套的异常是java.lang.IllegalArgumentException:org.hibernate.hql.internal.ast.QuerySyntaxException:意外的AST节点:{vector} [从com.model.TS t WHERE t.date =:date和(:studyList_0, :studyList_1为null或t.study IN(:studyList_0,:studyList_1))]