2017-05-18 12 views
0

FlexibleSearchQueryを使用してデータを取得しようとしていますが、空の結果に応答しています。このクエリを設定した場合、私は探しているデータを得ることができます。hac>Console>Flexible Search ここで私はどのようにjavaファイルでクエリを書いています。ここでFlexibleSearchQueryレスポンスデータなし

sb.append(" SELECT {p:pk} "); 
     sb.append(" FROM {" + ProductModel._TYPECODE + " AS p} "); 
     sb.append(" WHERE {p:" + ProductModel.PK + " } IN ({{"); 
     sb.append(" SELECT DISTINCT {pro:" + ProductModel.PK + "} "); 
     sb.append(" FROM {CategoryProductRelation AS cp},{" + ProductModel._TYPECODE + "! AS pro},{" + CategoryModel._TYPECODE 
       + " AS c}"); 
     sb.append(" WHERE {pro:" + ProductModel.PK + " } = {cp:target}"); 
     sb.append(" AND {c:" + CategoryModel.PK + " } = {cp:source}"); 
     sb.append(" AND {c:" + CategoryModel.CODE + " } !=?categoryCode }})"); 



args.put("categoryCode", categoryCode); 

if (args != null && !args.isEmpty()) 
{ 
      searchQuery.addQueryParameters(args); 
} 

SELECT {p:pk} FROM { Product AS p} WHERE { p: pk } IN ({{ 

      SELECT DISTINCT {pro: PK } 

        FROM 

      {CategoryProductRelation AS cp}, 
      {Product AS pro}, 
      {Category as c} 

      WHERE {pro: PK} = {cp:target} 

      AND {c:PK} = {cp:source} 
      AND {c:code} != '0101'}}) 

は、私は私が間違っているのは何

PK 
8796093579265 
8796101804033 
8796100165633 
8796098428929 
8796093153281 
8796102361089 
8796097052673 
8796093808641 
8796093972481 
8796096823297 

を取得し、私はそれがコンソールに入力した場合、私は

final FlexibleSearchQuery searchQuery = new FlexibleSearchQuery(sb.toString()); 

searchResult.getResult().size() >> retuns 0 

検索を呼び出す方法ですか? コンソールクエリと文字列クエリに違いはありますか?

答えて

1

私はあなたの場合の問題点は、定義によって、Restrectionsに関連していると思います:制限はどのタイプに応じて、検索結果を制限することができFlexibleSearchが従うルールです検索されたユーザーは、現在、その

に記録されますあなたがhac>Console>Flexible Searchを使用するときに私はすべての制限がHYBRIS柔軟な検索では、デフォルトでは無効になっている、あなたが管理者としてログインしているとし、一方で、あなたの柔軟さがす

import de.hybris.platform.search.restriction.SearchRestrictionService; 
... 
// Disable search restrictions 
searchRestrictionService.disableSearchRestrictions(); 
// some query goes here 

// Enable search restrictions 
searchRestrictionService.enableSearchRestrictions(); 
// some query goes here 

呼び出す前に、検索制限を無効にしてみてください

あなたは、タイプsearchigによってHMC内のすべての活性物質のrestrctionsをチェックすることができます。SearchRestrictionを、followinfスクリーンショット

を見て

enter image description here

参照:https://help.hybris.com/6.3.0/hcd/8c428f8286691014970ceee87aa01605.html

0

制限を回避する別の方法を実行するためにsessionServiceを使用することです

sessionService.executeInLocalView(new SessionExecutionBody() { @Override public void executeWithoutResult() { // do stuff } }, userService.getAdminUser());

私は、このソリューションは、よりエレガント見つけます。 :-)

関連する問題