Java,CriteriaBuilder,ORA-00907:缺少右括号

我尝试使用CriteriaBuilder而不是编写查询,但是当我对其进行测试时,它给出了错误,并且无法提取ResultSet。 我在服务中的代码部分:

public List getcategories(String responsibleGroupId) throws Exception {
    CriteriaBuilder builder = entityManager.getcriteriaBuilder();
    CriteriaQuery<SublogTypeMapV> query = builder.createQuery(SublogTypeMapV.class);
    Root<SublogTypeMapV> root = query.from(SublogTypeMapV.class);
    List<Predicate> andPredicates = new ArrayList<>();

    Predicate categoryIdNotNull = builder.isnotNull(root.get(SublogTypeMapV_.categoryId));
    Predicate categotyIdGt = builder.gt(root.get(SublogTypeMapV_.categoryId),0);
    String[] responsibleGroupListString = responsibleGroupId.split(",");
    Long[] responsibleGroupListLong = new Long[responsibleGroupListString.length];
    for (int i = 0; i < responsibleGroupListString.length; i++) {
        responsibleGroupListLong[i] = Long.valueOf(responsibleGroupListString[i]);
    }
    Predicate responsibleGroup = root.get(SublogTypeMapV_.responsibleGroupId).in(responsibleGroupListLong);
    Predicate getcategories;
    if (responsibleGroupId != null && !responsibleGroupId.equals("0"))
        getcategories = builder.and(categoryIdNotNull,categotyIdGt,responsibleGroup);
    else
        getcategories = builder.and(categoryIdNotNull,categotyIdGt);
    andPredicates.add(getcategories);
    Predicate resultPredicate = builder.and(andPredicates.toArray(new Predicate[0]));

    query.select(root).where(resultPredicate);
    return entityManager.createQuery(query).getResultList();
}

我在TestAPI中的代码部分:

@GetMapping("typemap/getcategories")
public List<SublogTypeMapV> getcategories(@RequestParam String responsibleGroupId) throws Exception{
    return typeMapService.getcategories(responsibleGroupId);
}

由休眠生成的查询:

14:06:33,608 INFO  [stdout] (default task-1) Hibernate: 
14:06:33,608 INFO  [stdout] (default task-1)     select
14:06:33,608 INFO  [stdout] (default task-1)         sublogtype0_.type_map_id as type_map_id1_7_,14:06:33,608 INFO  [stdout] (default task-1)         sublogtype0_.category as category2_7_,609 INFO  [stdout] (default task-1)         sublogtype0_.category_id as category_id3_7_,609 INFO  [stdout] (default task-1)         sublogtype0_.keyword as keyword4_7_,609 INFO  [stdout] (default task-1)         sublogtype0_.responsible_group_id as responsible_group_5_7_,609 INFO  [stdout] (default task-1)         sublogtype0_.subtype as subtype6_7_,609 INFO  [stdout] (default task-1)         sublogtype0_.subtype_id as subtype_id7_7_,609 INFO  [stdout] (default task-1)         sublogtype0_.type as type8_7_,609 INFO  [stdout] (default task-1)         sublogtype0_.type_id as type_id9_7_ 
14:06:33,609 INFO  [stdout] (default task-1)     from
14:06:33,609 INFO  [stdout] (default task-1)         reglr.sublog_type_map_v sublogtype0_ 
14:06:33,609 INFO  [stdout] (default task-1)     where
14:06:33,609 INFO  [stdout] (default task-1)         (
14:06:33,609 INFO  [stdout] (default task-1)             (
14:06:33,609 INFO  [stdout] (default task-1)                 sublogtype0_.category_id is not null 
14:06:33,609 INFO  [stdout] (default task-1)             )
14:06:33,609 INFO  [stdout] (default task-1)         )
14:06:33,609 INFO  [stdout] (default task-1)         and(
14:06:33,609 INFO  [stdout] (default task-1)                 sublogtype0_.category_id>0L 
14:06:33,609 INFO  [stdout] (default task-1)                 sublogtype0_.responsible_group_id in(
14:06:33,609 INFO  [stdout] (default task-1)                     7703L,7702L
14:06:33,609 INFO  [stdout] (default task-1)                 )
14:06:33,609 INFO  [stdout] (default task-1)         )

最后,错误:

14:06:34,050 WARN  [org.hibernate.engine.jdbc.spi.SqlExceptionHelper] (default task-1) SQL Error: 907,SQLState: 42000
14:06:34,050 ERROR [org.hibernate.engine.jdbc.spi.SqlExceptionHelper] (default task-1) ORA-00907: missing right parenthesis

对我来说,似乎括号生成得很好,我也尝试在sql developer中运行此查询,并且它可以工作。我花了几个小时试图找到解决方案,但找不到任何有用的方法。 有什么想法吗?

ksgshot 回答:Java,CriteriaBuilder,ORA-00907:缺少右括号

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/2872621.html

大家都在问