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