首页 > 解决方案 > 由于getJaloResult()错误,使用flexiblesearch服务连接hybris数据库的空指针异常

问题描述

null尝试hybris使用灵活搜索服务连接数据库时出现指针异常,hybris似乎是由于getJaloResult()方法。

我需要从hybris商业数据库中检索某些数据。我试图hybris通过使用方法来使用灵活的服务来做到这一点defaultFlexibleSearchService.search(),但是我得到了一个null指针异常。search()似乎在方法尝试调用方法时发生了异常getJaloResult()。我对解决方案一无所知 - 感谢您提供任何提示。

我的类定义代码在这里

package de.hybris.platform.integrationservices.audit;
import java.util.stream.Stream;
import com.sun.tools.javac.util.List;
import de.hybris.platform.audit.TypeAuditReportConfig;
import de.hybris.platform.audit.view.AuditViewService;
import de.hybris.platform.audit.view.impl.ReportView;
import de.hybris.platform.servicelayer.search.FlexibleSearchQuery;
import de.hybris.platform.servicelayer.search.FlexibleSearchService;
import de.hybris.platform.servicelayer.search.RelationQuery;
import de.hybris.platform.servicelayer.search.SearchResult;
import de.hybris.platform.servicelayer.search.impl.DefaultFlexibleSearchService;
import de.hybris.platform.integrationservices.model.IntegrationObjectModel;  

public class IntegrationObjectAudit implements AuditViewService
{
    private DefaultFlexibleSearchService defaultFlexibleSearchService;

    public IntegrationObjectAudit() {
        defaultFlexibleSearchService = new DefaultFlexibleSearchService();
    }

    public List<IntegrationObjectModel> searchModel(){
        String query = "SELECT {PK} FROM {IntegrationObject}";
        FlexibleSearchQuery flexibleSearchQuery = new FlexibleSearchQuery(query);
        flexibleSearchQuery.setCount(1);

        de.hybris.platform.servicelayer.search.SearchResult<IntegrationObjectModel> resListIntegrationModel = this.defaultFlexibleSearchService.search(query);
        List<IntegrationObjectModel> resList = (List<IntegrationObjectModel>) resListIntegrationModel.getResult();
        return resList;
    }
}

标签: javadatabasehybris

解决方案


没注意到它是几天前发布的。希望你已经解决了。仍然添加我的答案,因为它可能对其他人有帮助。

我看到你没有在 IntegrationObjectAudit 中注入 flexibleSearchService bean。并且由于没有注入flexibleSearchService bean,因此当您在其上调用任何函数时会导致NullPointerException。

您可以按以下方式修复它(spring bean injection concept)

  1. 您应该创建一个setter函数并通过spring xml注入它
  2. 或使用@Resource 或@Autowire 注释相同

public class IntegrationObjectAudit implements AuditViewService
{
    @Resource 
    private DefaultFlexibleSearchService flexibleSearchService;

     .....

希望能帮助到你。请告诉我。


推荐阅读