执行灵活的搜索查询时无法评估表达式方法抛出“ java.lang.illegalargumentexception”异常

问题描述

我在执行flexiblesearchservice.search(query)时从数据库获取产品详细信息,它抛出此错误。我的灵活搜索查询在hac上运行良好。但是从灵活的搜索服务中抛出错误。我的查询和服务如下所示。

            "({{select {p:"+ProductModel.PK+"} from { "+ OrderModel._TYPECODE +" as o  " +
            " join "+ OrderStatus._TYPECODE+" as os on {os:pk} = {o:"+OrderModel.STATUS+"}"+
            " join "+ OrderEntryModel._TYPECODE +" as oe on {oe:"+ OrderEntryModel.ORDER +"} = {o:"+OrderModel.PK+"}"+
            " join "+ ProductModel._TYPECODE +" as p on {oe:"+OrderEntryModel.PRODUCT+"} = {p:"+ProductModel.PK+"}"+
            " join "+ CatalogVersionModel._TYPECODE+" as cv on { p:"+ProductModel.CATALOGVERSION +"} = {cv:"+CatalogVersionModel.PK+"}"+
            " join "+ CatalogModel._TYPECODE +" as c on {p:"+ProductModel.CATALOG+"} = {c:"+CatalogModel.PK+"}} "+
            "where {os:code}='"+OrderStatus.COMPLETED +"' and {"+OrderModel.DATE+"}>'2017-08-16 00:00:00.000' " +
                "and {"+OrderModel.DATE+"}<'2020-09-30 00:00:00.000' " +
                "and {cv:"+CatalogVersionModel.VERSION+"}= 'Online' " +
                "and {c:"+CatalogModel.ID+"} like 'apparelProductCatalog' " +
                "group by {p:"+ProductModel.PK+"} order by sum({oe:"+OrderEntryModel.QUANTITY+"}) desc" +
            "  limit 10 }})";
  final FlexibleSearchQuery fQuery = new FlexibleSearchQuery(QUERY);
            fQuery.setResultClassList(Arrays.asList(ProductModel.class));
            final SearchResult<ProductModel> searchResult =flexibleSearchService.search(fQuery);
            final List<ProductModel> productModelList= searchResult.getResult();```
**error:** unable to evaluate the expression method threw 'java.lang.illegalargumentexception' exception
please help me out.

解决方法

"where {os:code}='"+OrderStatus.COMPLETED +"'

上面的代码可能是问题所在,OrderStatus.COMPLETED返回一个对象,而不是String

您可以将其作为查询参数传递。

"where {os:code} = '" + OrderStatus.COMPLETED.getCode() +"'