Variable Konfiguration der EntityManagerFactory

Status
Nicht offen für weitere Antworten.

parabool

Bekanntes Mitglied
Hallo,

ich nutze für ein Projekt JPA mit Hibernate als Service Provider Implementierung.
Soweit klappt auch alles prima.
Nun möchte ich variable Parameter wie DB-Url, Nutzer und Passwort auslagern
in einer Properties-Datei z.B.


Nichts einfacher als das. Also:
Code:
Map map = new HashMap();  // oder Properties
map.put("hibernate.connection.url","jdbc:mysql://localhosst:3306/test");

Persistence.createEntityManagerFactory("test",map);

Jedoch wird dann beim Start eine Exception geworfen:

Code:
javax.persistence.PersistenceException: java.lang.ClassCastException: java.lang.String


Verstehe ich nicht wirklich, denn eigentlich müsste es so funktionieren.
Oder übersehe ich irgendwas ?

Vielleicht hat es was mit der Log-Meldung "hibernate.properties not found" zu tun ?
Diese stehen zwar dann in der persistence.xml in der persistence-unit "test" , aber vielleicht klappt dann irgendwas
nicht mit der Initialisierung von Hibernate?


Ich hoffe jemand weiss da Rat.
Viele Grüsse
 
G

Guest

Gast
Also mit der Log-Meldung hat das nichts zu tun.

Bist du dir sicher, daß die Exception im Zusammenhang mit diesem Code-Stück steht?
 

parabool

Bekanntes Mitglied
Bist du dir sicher, daß die Exception im Zusammenhang mit diesem Code-Stück steht?

Ja. Wenn ich z.B. eine leere Map übergebe läuft es kommt keine Exception.
Nur wenn die Map Einträge hat.

Hier nochmal ein relevanter Auszug des Stacktraces:
Code:
Caused by: java.lang.ClassCastException: java.lang.String cannot be cast to java.util.Map$Entry
	at org.hibernate.ejb.packaging.PersistenceXmlLoader.deploy(PersistenceXmlLoader.java:101)
	at org.hibernate.ejb.Ejb3Configuration.createEntityManagerFactory(Ejb3Configuration.java:150)



Die beiden Klassen habe ich mir mal angeschaut, aber nicht so sehr detailiert.
Im Prinzip wird mittels containsKey die übergebene Map abgefragt, ob bestimmte Keys vorhanden sind,
um dann die aus der xml-Datei gebildete Map mit diesen Einträgen zu überschreiben.

Vielleicht irgendwelche Seiteneffekte.


Ich lass es erstmal liegen
danke für die Antwort.

schönen Gruss
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen


Oben