サービスビルダーは、trash-enabled="true "をプロパティとして追加した場合、モジュールのビルドに失敗する。

問題

  • サービスビルダーのエンティティに 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" のようなコンパイル・エラーが発生します。

この記事は役に立ちましたか?
0人中0人がこの記事が役に立ったと言っています