問題
-
サービスビルダーのエンティティに trash-enabled="true" 属性が定義されている場合、対応する抽象メソッドが Liferay dxp 7.4.13.u18 & 以前のバンドル用のモデル & ラッパークラス(FooModel、FooModelImpl、FooWrapper)用に生成されました。 しかし、Liferay dxp 7.4.13.u49のサービスビルダーはbuildServiceコマンドでこれらのメソッドを生成しません。
Environment
- DXP 7.4 U49+
解決策
- この問題は通常、サービスの構築に最新バージョンのServiceBuilderを誤って使用したために発生し、U49やそれ以前のバージョンと互換性がない可能性がある。 プロジェクトは、ServiceBuilderのバージョン1.0.439を使用するように設定する必要があります。
- 詳しく説明すると、U52以前はTrashHandlerインターフェイスがあり、そこにはゴミ関連のメソッドがいくつも含まれていた。 ServiceBuilderは、"trash-enabled "がtrueに設定されている場合、このインターフェイスを拡張/実装したModelクラスを生成し、これらのメソッドの実装をModelクラスに含めました。
U52 (LPS-152611) では、これらのメソッドを TrashHandler インターフェースから削除し、TrashHelper インターフェースの同名のメソッドを使用するようにしました。 また、ServiceBuilderを更新し、Modelクラスにこれらのメソッドを実装しないようにしました。 - U49では、TrashHandlerインターフェイスはまだこれらのメソッドを含んでいる。 しかし、ServiceBuilderの最新バージョンが使用されている場合、生成されたModelクラスはこれらのメソッドを実装していません。 そのため、"FooWrapper is not abstract and does not override abstract method isInTrashImplicitly() in TrashedModel" のようなコンパイル・エラーが発生します。
会員限定記事
Liferay エンタープライズ サブスクリプションをお持ちのお客様は1500件を超えるベストプラクティス、トラブルシューティング、その他のソリューション記事を閲覧できます。ログインすると、記事全体をお読みいただけます。
ログイン