Hibernate: javax.persstence. * Свойства драйвера вызывают неповторимыйovportedOperationException: пользователь должен предоставить соединение JDBC?
-
25-09-2019 - |
Вопрос
я использую
<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="" />
Во всех моих являемых приложениях Javase с гибернатом без проблем. Однако при использовании того же в WebApp (Tomcat) выброшен исключением:
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)
Я не мог найти ничего полезного в сети, поэтому я схватил резервную копию и заметил, что единственное изменение, которое я сделал, это то, что я ранее использовал:
<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="" />
После возврата к гибернации. * Свойства исключения ушли!
Что здесь здесь? Почему javax.persstence. * Свойства работают в среде Javase, но не в моем webApp? Это действительно странно ...
Решение
javax.persistence.*
Свойства были введены в JPA 2.0, то есть в Hibernate 3.5 и выше. Если вы используете предыдущую версию Hibernate, они не работают.
Не связан с StackOverflow