search(query)抛出NullPointerException

时间:2018-04-19 14:13:13

标签: hybris hybris-data-hub

    public List<DHProductLookupModel> findProductbyCCsapProductId(final String code)
{
    final String queryString = "SELECT {p:" + DHProductLookupModel.SAPPRODUCTID + "}" + "FROM{" + DHProductLookupModel._TYPECODE
            + " AS p}" + "WHERE" + "{p:" + DHProductLookupModel.SAPPRODUCTID + "}=?code ";
    final FlexibleSearchQuery query = new FlexibleSearchQuery(queryString);
    query.addQueryParameter("code", code);
    return flexibleSearchService.<DHProductLookupModel> search(query).getResult();
}

搜索(查询)抛出Null Pointer Exception,如何处理?

输出:

Caused by: java.lang.NullPointerException
    at de.hybris.platform.servicelayer.search.impl.DefaultFlexibleSearchService.getJaloResult(DefaultFlexibleSearchService.java:396) ~[coreserver.jar:?]
    at de.hybris.platform.servicelayer.search.impl.DefaultFlexibleSearchService.search(DefaultFlexibleSearchService.java:168) ~[coreserver.jar:?]
    at com.cancom.core.productlookup.dao.impl.CCProductLookupDaoImpl.findProductbyCCmanufacturerProductId(CCProductLookupDaoImpl.java:39) ~[classes/:?]
    at com.cancom.core.productlookup.service.impl.CCProductLookupServiceImpl.getProductforCCmanufacturerProductId(CCProductLookupServiceImpl.java:37) ~[classes/:?]

谢谢!

3 个答案:

答案 0 :(得分:2)

更改您的灵活搜索查询
 final String queryString = "SELECT {p:" + DHProductLookupModel.SAPPRODUCTID + "}" + "FROM{" + DHProductLookupModel._TYPECODE
        + " AS p}" + "WHERE" + "{p:" + DHProductLookupModel.SAPPRODUCTID + "}=?code ";

 final String queryString = "SELECT {p:" + DHProductLookupModel.PK + "}" + "FROM{" + DHProductLookupModel._TYPECODE
        + " AS p}" + "WHERE" + "{p:" + DHProductLookupModel.SAPPRODUCTID + "}=?code ";

您应该在搜索结果中发送DHProductLookupModel.PK

答案 1 :(得分:0)

在您的情况下,您可以使用 flexibleSearchService getModelsByExample ,而不是编写查询。

你的方法就像

 public List<DHProductLookupModel> findProductbyCCsapProductId(final String code)
 {
     DHProductLookupModel dhProductLookupModel = new DHProductLookupModel();
     dhProductLookupModel.setSapProductID(code);
     return getFlexibleSearchService().getModelsByExample(dhProductLookupModel);
 }

find the example here

答案 2 :(得分:0)

谢谢大家! 我发现了问题。这是在我的春天。我只需要把:

 <context:component-scan base-package="myPackage"/>

为了安全起见,我还使用DHProductLookupModel.PK更改了查询。现在它的工作!