使用Arraylist作为参数时出现意外的AST节点{vector“}

时间:2019-11-17 16:02:50

标签: java spring spring-mvc jpa jpql

我尝试获取具有多级过滤器的数据库表,它们不是必需的,但它们可能是列表。

@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))]

0 个答案:

没有答案