pgoetz: Hibernate: hbm.xml Referenz zwischen zwei Projekten

Beitrag lesen

Servus,

[...]
Nun muss ich in einer hbm.xml (Projekt B) auf eine Entity der anderen hbm.xml (Projekt A) referenzieren.

Konkret sieht das Mapping so aus:

class  name="projectB.Payer">

  <id name="organizationId">  
  	<generator class="foreign" >  
  		<param name="property">organizationId</param>  
  	</generator>  
  </id>  
  <one-to-one name="organizationId" class="projectA.Organization"/>  

Allerdings erhalte ich folgende Exception:

Caused by: org.hibernate.MappingException: persistent class not known: projectA.Organization

Die Projektstruktur in Eclipse ist für Hibernate irrelevant. Wichtig ist nur die Packagestruktur. Du musst also das vollqualifizierte Package angeben und zusätzlich muss die Klasse, auf die referenziert wird, auch im Classpath vorhanden sein. Dazu kann das Projekt A dem Projekt B als Abhängigkeit hinzugefügt werden: Kontextmenü des Projekts B -> Properties -> Java Build Path -> Projects -> Add...
Da Eclipse aber vermutlich nicht die Zielausführungsplattform ist, musst Du natürlich im Zielsystem auch dafür sorgen, dass die Projekte bzw. die daraus entstehenden JARs beide im Classpath sind, damit Hibernate die gemappten Klassen finden kann.

PS: die Projektstruktur ist vorgegeben, ebenso wie das Datenbank-Desin.

Von wem ist die Projektstruktur vorgegeben. Wenn sie vermurkst ist, sollte man in meinen Augen lieber darüber nachdenken, als über Umwege, wie man mit vermeintlich fixen Vorgaben ans Ziel kommt. Was wollt Ihr denn wirklich machen? Vielleicht ist das Vorgehen nicht das beste.

Peter