2010-12-10 4 views
2

Ich verwendeHibernate: javax.persistence. * Treibereigenschaften verursachen UnsupportedOperationException: Der Benutzer muss eine JDBC-Verbindung bereitstellen?

<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" /> 
<property name="javax.persistence.jdbc.url"  value="jdbc:mysql://localhost/whatever" /> 
<property name="javax.persistence.jdbc.user"  value="" /> 
<property name="javax.persistence.jdbc.password" value="" /> 

in allen meinen JavaSE Test apps mit Hibernate ohne Probleme. Wenn jedoch das gleiche in einer Webapp (Tomcat) mit einer Ausnahme ausgelöst:

java.lang.UnsupportedOperationException: The user must supply a JDBC connection 
    org.hibernate.connection.UserSuppliedConnectionProvider.getConnection(UserSuppliedConnectionProvider.java:54) 
    org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:446) 
    org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:167) 
    org.hibernate.jdbc.AbstractBatcher.prepareQueryStatement(AbstractBatcher.java:161) 
    org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1596) 
    org.hibernate.loader.Loader.doQuery(Loader.java:717) 
    org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:270) 
    org.hibernate.loader.Loader.loadEntity(Loader.java:1933) 
    org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:86) 
    org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:76) 
    org.hibernate.persister.entity.AbstractEntityPersister.load(AbstractEntityPersister.java:3270) 
    org.hibernate.event.def.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:496) 
    org.hibernate.event.def.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:477) 
    org.hibernate.event.def.DefaultLoadEventListener.load(DefaultLoadEventListener.java:227) 
    org.hibernate.event.def.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:285) 
    org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:152) 
    org.hibernate.impl.SessionImpl.fireLoad(SessionImpl.java:1080) 
    org.hibernate.impl.SessionImpl.get(SessionImpl.java:997) 
    org.hibernate.impl.SessionImpl.get(SessionImpl.java:990) 
    org.hibernate.ejb.AbstractEntityManagerImpl.find(AbstractEntityManagerImpl.java:182) 
    com.kawoolutions.bbstats.servlet.BasketballStatsServlet.doGet(BasketballStatsServlet.java:405) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:690) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803) 

ich nichts Nützliches im Netz finden konnte, so nahm ich ein Backup und bemerkte, die einzige Änderung, die ich machte, war, dass ich vorher verwendet:

<property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver" /> 
<property name="hibernate.connection.url"   value="jdbc:mysql://localhost/whatever" /> 
<property name="hibernate.connection.username"  value="" /> 
<property name="hibernate.connection.password"  value="" /> 

Nach dem Zurückkehren in den Ruhezustand. * Eigenschaften ging die Ausnahme weg!

Was ist hier falsch? Warum funktionieren die Eigenschaften von javax.persistence. * In einer JavaSE-Umgebung, aber nicht in meiner Webanwendung? Es ist wirklich seltsam ...

Antwort

4

javax.persistence.* Eigenschaften wurden in JPA 2.0 eingeführt, das ist in Hibernate 3.5 und höher. Wenn Sie eine frühere Version von Hibernate verwenden, funktionieren sie nicht.

+0

Ich benutze Hibernate 3.5.4 ... – Kawu

+0

Ich habe gerade versucht, die Hibernate 3.6 JAR, gleich hier. – Kawu

+2

@Kawu: Stellen Sie sicher, dass Sie keine alten Hibernate-Jars im Klassenpfad haben (insbesondere 'hibernate-entitymanager'). – axtavt

Verwandte Themen