Hibernate - entity class not found

lumo

Top Contributor
Hallo,

ich hab ein problem mit hibernate in verbindung mit eclipse und bundles.
und zwar bekomme ich folgende exception
Code:
org.hibernate.MappingException: component class not found: at...osgi.service.data.domain.impl.MultimediaImpl
	at org.hibernate.mapping.Component.getComponentClass(Component.java:104)
	at org.hibernate.tuple.component.PojoComponentTuplizer.buildGetter(PojoComponentTuplizer.java:133)
	at org.hibernate.tuple.component.AbstractComponentTuplizer.<init>(AbstractComponentTuplizer.java:43)
	at org.hibernate.tuple.component.PojoComponentTuplizer.<init>(PojoComponentTuplizer.java:38)
	at org.hibernate.tuple.component.ComponentEntityModeToTuplizerMapping.<init>(ComponentEntityModeToTuplizerMapping.java:52)
	at org.hibernate.tuple.component.ComponentMetamodel.<init>(ComponentMetamodel.java:50)
	at org.hibernate.mapping.Component.buildType(Component.java:152)
	at org.hibernate.mapping.Component.getType(Component.java:145)
	at org.hibernate.mapping.SimpleValue.isValid(SimpleValue.java:253)
	at org.hibernate.mapping.Collection.validate(Collection.java:278)
	at org.hibernate.mapping.Set.validate(Set.java:19)
	at org.hibernate.cfg.Configuration.validate(Configuration.java:1106)
	at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1287)
	at at...osgi.service.hibernate.impl.SessionProvider.setConfig(SessionProvider.java:249)
ich weiss, dass das heißt, dass er meine class file nicht findet.

aber: die klasse ist genau dort wo er sie sucht, allerdings in einem anderen bundle/plug-in
wenn ich die klasse in das selbe bundle/plug-in kopiere, dann klappt die ganze sache!

alerdings will ich das nicht, denn ich möchte mehrere verschiedene datenbankanbindungen per plugin ermöglichen...

ich habe schon versucht Eclipse-BuddyPolicy: global zu setzen, was aber keinen unterschied bringt.
ich habe auch versucht das bunde als required angeben (ist ja ein muss ;) )
habe auch das package explizit schon als incuded/required angegeben!

hat jemand von euch noch eine idee wie ich das problem lösten könnte? (jar erstellen oder sowas in die art?!)

edit: hab jetzt versucht das bundle mit den klassen als jar zu exportieren, und hab die jar in den classpath des hibernate-pulgins gelegt... der fehler tritt noch immer auf...
 
Zuletzt bearbeitet:

Cage Hunter

Aktives Mitglied
Ähm zeig mal deine Config her (da wo du sagst, dass die Klasse gemapped werden soll) und die "Bundles/Plug-Ins" von denen du da redest...
Bundles sind doch eigentlich für statische Daten, du meinst nich zufällig "Packages" oder?
 

lumo

Top Contributor
ich habe eine RCP applikation mit mehreren plug-in's.
packages wären dann die verz. in meinem plug-in.
struktur meiner app:

application(main plug-in meiner rcp)
osgi.service.data (plug-in, die ausprogrammierten klassen und ihre hbm.xml files)
osgi.service.hibernate (plug-in, mit dem session provider und der Configuration)
libs(plug in, das alle libs einbindet und per export zur verfügung stellt)
views (plug-in's, die die graphische oberfläche enthalten)

meine hibernate config mache ich per code (das mit dem xml file klappt nicht so wie ich mir das wünsche)
Code:
		final Configuration cfg = new Configuration();
		// basic config
		cfg.setProperty("current_session_context_class", "thread");
		cfg.setProperty("hibernate.dialect",
				"org.hibernate.dialect.SQLServerDialect");
		cfg.setProperty("hibernate.connection.driver_class",
				"com.microsoft.sqlserver.jdbc.SQLServerDriver");
		cfg.addClass(SiteImpl.class);
		cfg.addClass(BioObjectImpl.class);
		cfg.addClass(LookupCoordinatesOrigin.class);
		cfg.addClass(LookupSite01.class);
		cfg.addClass(LookupSite02.class);
		cfg.addClass(LookupSite03.class);
		cfg.addClass(LookupSite04.class);
		cfg.addClass(LookupSite05.class);
		cfg.addClass(LookupSiteCatalog.class);
		cfg.addClass(LookupSiteExposition.class);
		System.out.println("SessionProvider KNOWS: "
				+ MultimediaImpl.class.getName());
		// connection details
		cfg.setProperty(Environment.USER, login);
		cfg.setProperty(Environment.PASS, password);
		final String connectionString = String
				.format(
						"jdbc:sqlserver://%s:%s;DatabaseName=%s;SelectMethod=cursor;integratedSecurity=%s",
						host, port, db, integratedSecurity);
		System.out
				.println("connectionString from hibernate.hbm.xml was overwritten by -> "
						+ connectionString);
		cfg.setProperty(Environment.URL, connectionString);

		sessionFactory = cfg.buildSessionFactory();

die ausgabe des codes gibt dann folgendes:
Code:
SessionProvider KNOWS: at.biooffice.osgi.service.data.domain.impl.MultimediaImpl
connectionString from hibernate.hbm.xml was overwritten by -> jdbc:sqlserver://server2:1433;DatabaseName=testsystem;SelectMethod=cursor;integratedSecurity=true
!SESSION 2010-08-27 09:09:48.831 -----------------------------------------------
eclipse.buildId=unknown
java.version=1.6.0_21
java.vendor=Sun Microsystems Inc.
BootLoader constants: OS=win32, ARCH=x86, WS=win32, NL=de_AT
Framework arguments:  -product at.biooffice.application.product
Command-line arguments:  -product at.biooffice.application.product -data D:\JAVA\WORKSPACE/../runtime-BioOffice3AlphaDog.product -dev file:D:/JAVA/WORKSPACE/.metadata/.plugins/org.eclipse.pde.core/BioOffice3AlphaDog.product/dev.properties -os win32 -ws win32 -arch x86 -console -consolelog -debug

!ENTRY org.eclipse.ui 4 0 2010-08-27 09:09:56.237
!MESSAGE Unhandled event loop exception
!STACK 0
org.hibernate.MappingException: component class not found: at.biooffice.osgi.service.data.domain.impl.MultimediaImpl

also oben schreibt er er kennt die klasse (klasse ist ja included, wird gefunden, kann auch mit getClass den namen auflösen) weiter unten im code kennt er sie dann plötzlich nicht mehr.
hinweis: die klasse MultimediaImpl und SiteImpl&BioObjectImpl liegen im selben package & plug-in (osgi.service.data, wie auch oben ausgegeben ;) )
 

Cage Hunter

Aktives Mitglied
Öhm...das was du da ausgibst hat aber nichts mit dem zutun was evtl. in der Configuration angekommen sein könnte :)

Registrier mal den vollen Namen Deiner Klassen, muss es nich sein, hatte ich so aber auch schonmal, obwohl mir die Exception auch den vollen Namen vorgelesen hatte^^

Java:
cfg.addClass(at.biooffice.osgi.service.data.domain.impl.MultimediaImpl.class);

Ich hab grad mal das allwissende Google gefragt und gesehn, dass die Exception nichtmal unbedingt was mit ner "fehlenden" Klasse zutun haben muss :shock:

Du könntest sogar einfach das Commit nach den Transaktionen vergessen haben :rtfm:
Möglich wäre auch noch, dass deine MultimediaImpl nicht public ist

Hibernate ist was Fehler angeht immer sehr hilfreich ^^
 

lumo

Top Contributor
Du könntest sogar einfach das Commit nach den Transaktionen vergessen haben
ich hab das problem nicht bei nem query... er wirft die exception schon bei der config ;)

Möglich wäre auch noch, dass deine MultimediaImpl nicht public ist
Code:
public class MultimediaImpl extends GuidItem implements Multimedia {

die klasse multimedia wird nicht in einem eigenen hbm file beschrieben sondern wird im SiteImpl.hbm.xml beschrieben,
also wird ein
Code:
cfg.addClass(at.biooffice.osgi.service.data.domain.impl.MultimediaImpl.class);
nicht kappen.

in der xml sieht das so aus:
[XML]
...SiteImpl stuff...
<!-- Mapping MultimediaItems as Collection of Components -->
<!-- Chapter 6.2.2 in Manning/Java Persistence (must implement equals() and hashcode() )-->
<set name="multimediaItems" table="tMultimedia" lazy="true" fetch="select"
order-by="mumFileName asc">
<key column ="mumSysId" />
<composite-element class="at.biooffice.osgi.service.data.domain.impl.MultimediaImpl" >
<property name="id" type="int" formula="mumIdMultimedia" />
<property name="guid" column="mumGuidMultimedia" type="string" length="36"/>
<property name="parentCategory" type="string" column="mumSysCategory" length="30" not-null="true" />
<property name="parentId" type="int" formula="mumSysId" />
<property name="name" type="string" column="mumName"/>
<property name="fileName" type="string" column="mumFileName"/>
<property name="format" type="string" column="mumFormat" length="50"/>
<property name="version" type="string" column="mumVersion" length="30" />
<property name="copyright" type="string" column="mumCopyright" />
<property name="author" type="string" column="mumAuthor" length="100"/>
<property name="comments" type="string" column="mumComments" length="50"/>
</composite-element>
</set>
...SiteImpl stuff...
[/XML]
 

Cage Hunter

Aktives Mitglied
Hm...ne, ich hab absolut keine Ahnung woran es liegen könnte sorry :(
Besonders die xml-Konfigurationen hab ich nie benutzt weil ich Annotationen schicker finde, könnte Dir also nicht mal sagen ob an der Konfig was faul is:/
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
H [Hibernate] Unknown Entity Data Tier 3
A @org.hibernate.annotations.Entity(dynamicUpdate=true, optimisticLock=OptimisticLockType.ALL) Data Tier 2
byte Hibernate: Criteria & SubQuery - Unknown Entity null Data Tier 1
0 org.hibernate.MappingException: Unknown entity Data Tier 8
K Hibernate: Unknown entity Data Tier 7
T Hibernate/Spring JPA: eigene ID generieren Data Tier 5
Avalon @ManyToOne Hibernate oder JPA? Data Tier 5
D Hibernate Hibernate mit MariaDB Data Tier 1
ToBJo Hibernate Glassfish deploy mit Hibernate schlägt fehl Data Tier 1
C JPA Hibernate Map<String,String> richtig mappen Data Tier 2
S JPA Hibernate Search & EclipseLink (oder OpenJPA) Data Tier 0
R JPA Probleme mit Wechsel von EclipseLink auf Hibernate Data Tier 4
ARadauer Hibernate Entität readonly laden... Data Tier 1
G Hibernate SQL in Hibernate: Keine Parameter mit Index? Data Tier 2
P Wildfly + Hibernate + SQL Server Data Tier 0
E JPA Hibernate Query mit Timestamp hat seltsames Verhalten Data Tier 1
M Eclipse 4 RCP Hibernate Problem Data Tier 3
C Hibernate ProgressBar updaten mit Daten aus Hibernate Data Tier 4
B Hibernate und MySQL testen Data Tier 8
I Hibernate HQL: generiertes SQL ausgeben Data Tier 1
R mapping-file für hibernate zum Überschreiben der Annotationen Data Tier 7
R Hibernate Hibernate und Logback Data Tier 2
R Hibernate möchte Schema zwei mal undeployen Data Tier 2
F Hibernate Hibernate / JPA Data Tier 4
E Hibernate: Session vs EntityManager Data Tier 3
C Hibernate Hibernate Code Generation Data Tier 3
S Hibernate Mehrfachverbindung mit Hibernate Data Tier 3
M Hibernate Einstiegsfrage Data Tier 5
M Exception in thread "main" org.hibernate.MappingException: java.lang.ClassNotFoundException: Message Data Tier 4
S Hibernate Einstieg in Hibernate 3.2 sinnvoll? Data Tier 8
P JPA Eigene Vererbungsstrategie mit JPA / Hibernate Data Tier 2
J Hibernate Problem bei Master-Detail-Tabellen Data Tier 5
Y Jboss seam-hibernate-jpa Data Tier 5
RaoulDuke Hibernate Map<String,String> mit Annotations mappen Data Tier 2
M Hibernate Hibernate with GWT Data Tier 4
C Hibernate JPA mysql db erstellen Data Tier 4
M Hibernate Hibernate liest Daten zu oft aus! Data Tier 16
pg1337 Hibernate Fragen Data Tier 11
D Probleme bei Left Joins mit Hibernate createCriterias() Data Tier 2
D Hibernate probleme mit Verlinkungstabelle Data Tier 4
2 Hibernate Annotations Data Tier 7
G Hibernate select update no wait Data Tier 8
Z Hibernate: Many-To-Many nur eine bestimmte Spalte Data Tier 3
K Hibernate - Envers - Erzeugung der SQL Skripte Data Tier 4
G Hibernate 1:n Beziehung mit Vererbung Data Tier 5
D Hibernate-Criteria-API (Projections und MAX-Funktion) Data Tier 6
L Hibernate: failed to lazily initialize a collection of role Data Tier 3
S Hibernate hibernate.cfg.xml Data Tier 14
D JPA vs Hibernate.cfg und Entitymanager Data Tier 6
H Hibernate - Mapping für Enumeration Data Tier 1
R Hibernate Criteria Abfrageproblem Data Tier 2
A Hibernate und jdbc zusammen Data Tier 4
D Mit Hibernate aus JUnit ein DB-Schema erzeugen Data Tier 6
S [Hibernate] No Persistence provider for EntityManager Data Tier 5
B Problem mit org.hibernate.LazyInitializationException Data Tier 11
G Hibernate HQL und Interface Data Tier 4
G JSF Hibernate no session or session was closed Data Tier 12
T JPA2/Hibernate: Many-to-Many-Relation wird u.a. beim löschen nicht aktualisiert Data Tier 14
S (Hibernate) Mapping einer Datenbanktabelle mit mehreren Fremdschlüssel Data Tier 7
X [Hibernate] Zusammengesetzte Entities möglich? Data Tier 7
N Hibernate Fake? Data Tier 2
S Problem beim Insert mit Hibernate Data Tier 9
V Hibernate Projection Data Tier 2
T org.hibernate.impl.SessionFactoryImpl Memory Leak Data Tier 10
G Hibernate Composite key Data Tier 11
X [Hibernate] Connection Pool - MinSize ? Data Tier 2
R Hibernate Criteria OR Data Tier 2
T hibernate/jpa abgefragte Listen immer mit Null-Werten gefüllt Data Tier 8
X [Hibernate] Anderen Connection Pool - Vorschläge? Data Tier 3
ARadauer Hibernate DDL Loggen Data Tier 6
G Hibernate abfrage Collection Data Tier 3
X [Hibernate] ReverseEngineering - Eigene Strategy verwenden? Data Tier 3
R Hibernate Criteria .group größer als Data Tier 5
R Hibernate daten laden Data Tier 7
H [Hibernate]1:1 Beziehung Data Tier 8
H [Hibernate]No CurrentSessionContext configured! Data Tier 6
X [Hibernate] Lässt sich die Dauer eines SELECTs loggen? Data Tier 4
R Hibernate n:n Relationtabelle mit Date Data Tier 3
H [Hibernate] Configuration Data Tier 3
C [Hibernate] Generierung von hbm.xml to Java Data Tier 4
lumo Eclipse & JPA & Hibernate & Derby Data Tier 5
J Zufallsauswahl aus ResultList bei JPA(Hibernate) / Performance Data Tier 3
M Hibernate: Datum 0001-01-01 erzeugt null-Datum Data Tier 4
G Datenbankzugriff mit Hibernate Data Tier 7
Y Hibernate - Angabe des Schemas Data Tier 6
LadyMilka (Hibernate) in Criteria implizierter Join durch Subquery's Data Tier 8
M Hibernate Mehr als 1 Object speichern? Data Tier 18
M Unerklärliche Hibernate Exception Data Tier 20
LadyMilka (Hibernate) subquery in FROM-Clause Data Tier 9
haemi Viele DTOs in hibernate IdentityMap Data Tier 3
LadyMilka (hibernate) UNION dem Dialekt hinzufügen Data Tier 3
M Hibernate + Oracle 10g XE Data Tier 3
P SQL PRoblem Hibernate? Data Tier 8
J Vererbung mit JPA / Hibernate - pro/contra Data Tier 3
T JBoss/Hibernate: Abfrage dauert lang + hohe CPU? Data Tier 19
7 Hibernate-Abfrage (SubSelect im FROM) Data Tier 2
G Hibernate: many-to-one - Verwaiste Datensätze löschen Data Tier 2
G Layer für Datenbankzugriff Hibernate Data Tier 5
G Hibernate Zwischentabelle Data Tier 2
Java.getSkill() Hibernate und Spalte vom Typ xml Data Tier 6

Ähnliche Java Themen

Neue Themen


Oben