0

Ich habe ein Eltern-Portlet, das den Liferay Service Builder für die Persistenz verwendet. Die untergeordneten Portlets verwenden dieselben Entitäten für die Persistenz. Also habe ich das Eltern-Portlet als Abhängigkeit in untergeordneten Portlet mit Liferay-Plugin-Eigenschaften hinzugefügt. Alles ist in Ordnung, wenn ich einen einzigen Primärschlüssel für Entitäten habe. Aber im Falle einer zusammengesetzten Primärschlüssel-Entität tritt eine Klassenausnahme auf, wenn ich eine Entität finde, die diese Entität verwendet. Ich konnte den Grund nicht finden. ist es wegen Klassenladerproblemen?Class-Cast-Ausnahme bei Verwendung des Composite-Schlüssels in Service Builder

Antwort

0

Das Service-JAR existiert sowohl im Eltern-Portlet als auch im Kind-Portlet, was wir in diesem Szenario nicht vermeiden können. Während das Debugging ausgeführt wird, obwohl das PK-Klassenobjekt in einem untergeordneten Portlet erstellt wird, erfolgt die Persistenz im übergeordneten Portlet mithilfe des übergeordneten Portlet-Klassenladeprogramms. Das macht das Problem.

Die Lösung besteht darin, eine Methode in localserviceImpl für die Persistenz oder das Abrufen ohne Verwendung von Composite-PK zu erstellen. Erstellen Sie mit einzelnen PK-Attributen. Erstellen Sie PK in localServiceImpl mit den Attributen und gehen Sie für fetch oder persistence.

0

Höchstwahrscheinlich könnten Sie diese Klassen zweimal auf Ihrem classpath haben. Wenn Sie die Abhängigkeit über liferay-plugin-package.properties definieren, befindet sich die jars in WEB-INF/lib. Vielleicht haben Sie auch die gleiche jars versehentlich auf der globalen classpathtomcat/lib/ext.

+0

Ich habe das Glas im globalen Klassenpfad nicht. Das Dienst-JAR existiert sowohl im Eltern-Portlet als auch im Kind-Portlet, was wir in diesem Szenario nicht vermeiden können. Während das Debugging ausgeführt wird, obwohl das PK-Klassenobjekt in einem untergeordneten Portlet erstellt wird, erfolgt die Persistenz im übergeordneten Portlet mithilfe des übergeordneten Portlet-Klassenladeprogramms. Das macht das Problem. – San

Verwandte Themen