2017-03-28 4 views
0

AssetEntryQueryは設定したすべてのパラメータを無視しているため、ワイルドカードクエリを実行し、すべてのアセットエントリを取得しています。私が今やっているのLiferay 7はAssetEntryQueryパラメータを無視します

スニペット:私はこのコードを実行すると

long[] classTypeIds = new long[] { 30837 }; 

AssetEntryQuery assetQuery = new AssetEntryQuery(); 
assetQuery.setClassTypeIds(classTypeIds); 

List<AssetEntry> entries = AssetEntryLocalServiceUtil.getEntries(assetQuery); 

foreach (AssetEntry entry : entries) { 
    System.out.printf("Entry with classTypeId %d expected %d", entry.getClassTypeId(), 30837); 
} 

、それは彼らのclassTypeIdがフィルタリングされずにLiferayのからすべてのエントリのリストを返します。

出力:

[...] 
Entry with classTypeId 0 expected 30837 
Entry with classTypeId 0 expected 30837 
Entry with classTypeId 28920 expected 30837 
Entry with classTypeId 30331 expected 30837 
Entry with classTypeId 30837 expected 30837 
Entry with classTypeId 30837 expected 30837 
Entry with classTypeId 30837 expected 30837 
Entry with classTypeId 30921 expected 30837 
[...] 

は、Liferayは私のAssetEntryQuery paramsはを無視しているか、Liferayの自体の中にバグですので、私は何かが足りないのですか?

+0

あなたの事件について私は興味があります。コードは、別の 'classTypeId'があることを認識しています(私の答えで述べたように、DBに保持されている0の値には関係しません)。 'classNameId'があなたのユースケースにうまくいかない場合は、Liferayフォーラムに投稿することをお勧めします。 https://web.liferay.com/community/forums –

答えて

0

私が意図しているかどうかわからない(恐らくそうではない)が、私のDBのテーブルassetentry(私は開発者のためだけに見ています。 )、classtypeidフィールドは、最新のliferay-portalマスターブランチのビルドのすべてのエントリに対して0です。これは、暗闇の中でだけでショットですが、あなたは

AssetEntryQuery.setClassNameIds

代わりのsetClassTypeIds、それはトリックを行うかどうかを確認を呼び出してみてください。

+0

あなたの答えRussに感謝します。私が理解する限り、classTypeIdはAssetEntriesとDDMをリンクするために使用され、classNameIdはAssetEntriesをバッキングクラス(JournalArticle、DLFileEntryなど)とリンクするために使用されるため、問題は解決されません。あなたはどこにバグを報告するのか知っていますか?彼らのissueトラッカー(http://issues.liferay.com/)はサインアップを閉じました。 – Tylerian

+0

ええ、私は 'classTypeId'が何のためにあったのか分かりませんでしたが、それは理にかなっていると思います。 'classNameID'はあなたが言ったように、アセットエントリ(この場合)をバッキングクラスに関連付けるためのものです。 –

関連する問題