1

永続化のために Liferay Service Builder を使用する親ポートレットがあります。子ポートレットは永続化のために同じエンティティを使用します。そのため、Liferay プラグイン プロパティを使用して、親ポートレットを子ポートレットの依存関係として追加しました。エンティティの主キーが 1 つあれば、すべて問題ありません。しかし、複合主キー エンティティの場合、それを使用しているエンティティを見つけると、クラス キャスト例外が発生します。理由がわかりませんでした。クラスローダーの問題が原因ですか?

4

3 に答える 3

2

サービス jar は、このシナリオでは避けることができない親ポートレットと子ポートレットの両方に存在します。デバッグ中、子ポートレットで PK クラス オブジェクトが作成されても、親ポートレット クラス ローダーを使用して親ポートレットで永続化が発生します。これが問題になります。

解決策は、複合 PK を使用せずに、永続化またはフェッチのために localserviceImpl にメソッドを作成することです。個々の PK 属性で作成します。属性を使用して localServiceImpl に PK を作成し、フェッチまたは永続化に進みます。

于 2016-04-23T16:15:16.070 に答える
0

ほとんどの場合、これらのクラスが に 2 回ある可能性がありますclasspath。を介して依存関係を定義するとliferay-plugin-package.properties、 はjarsになりますWEB-INF/lib。グローバルにも同じものをjarsうっかり持っているかもしれませんclasspath tomcat/lib/ext

于 2016-04-21T08:21:29.343 に答える