灵活的搜索查询在java文件中返回null但在hac中工作正常

时间:2016-10-19 09:26:41

标签: java hybris

我试图通过一种方法获取一些数据。我的查询在hac中正常工作但在java代码中使用时结果为null。以下是我的java代码: -

 public class abc
 {
        @Resource
     private UserService userService;
     @Resource
     private SearchRestrictionService searchRestrictionService;
     @Resource
     private CatalogVersionService catalogVersionService;

         public List<ProductModel> findRequiredProducts()
         {
             this.userService.setCurrentUser(userService.getAdminUser());
             this.searchRestrictionService.disableSearchRestrictions();
                 this.catalogVersionService.setSessionCatalogVersion("abcCatalog", "Online");
          final String query = "select {p:name},{p.creationtime} from {Product! as p}";
          final FlexibleSearchQuery productQuery = new FlexibleSearchQuery(query);
          final SearchResult<ProductModel> searchResult = getFlexibleSearchService().search(productquery);
          this.searchRestrictionService.enableSearchRestrictions();
         final List<ProductModel> requiredProducts = searchResult.getResult();

         }

 }

在执行此代码时,我得到了lazylist [null]&#34;在requiredProduct列表中。可能是什么问题。

1 个答案:

答案 0 :(得分:1)

当您使用灵活的搜索服务时,您应该感兴趣的唯一属性是主键,这里的问题是灵活的搜索服务会尝试将名称( String )转换为PK( long ),尝试使用以下代码(Groovy脚本):

import de.hybris.platform.servicelayer.search.FlexibleSearchQuery
import de.hybris.platform.servicelayer.search.SearchResult

def userService = spring.getBean("userService")
def searchRestrictionService = spring.getBean("searchRestrictionService")
def catalogVersionService = spring.getBean("catalogVersionService")
def flexibleSearchService = spring.getBean("flexibleSearchService")

userService.setCurrentUser(userService.getAdminUser())

def query = "select {pk} from {Product! as p}"
FlexibleSearchQuery productQuery = new FlexibleSearchQuery(query);
def searchResult = flexibleSearchService.search(productQuery);
def requiredProducts = searchResult.getResult();

请记住!表示您不会加载任何子类型