Какая версия Hibernate является автономной (не требует реализации JPA)? - PullRequest
1 голос
/ 12 января 2011

Я ищу такую ​​версию, но не могу найти историю релизов Hibernate в сети.

Я пытался использовать последнюю версию Hibernate на момент написания, 3.6.0Final. Но когда я запускаю свое приложение, я получаю исключение:

java.lang.ExceptionInInitializerError
    com.st.wma.datalayer.hibernate.util.HibernateUtil.<clinit>(HibernateUtil.java:19)
    com.st.wma.datalayer.hibernate.logic.BaseManager.<init>(BaseManager.java:14)
    com.st.wma.datalayer.hibernate.logic.MapSearchManager.<init>(MapSearchManager.java:42)
    com.st.wma.page.mapsearch.MapSearchPage.beforeRender(MapSearchPage.java:44)
    st.liotrox.page.WPage.doWrite(WPage.java:1712)
    st.liotrox.page.WPage.write(WPage.java:1626)
    st.liotrox.servlet.CIPRequestHandler.doRenderPage(CIPRequestHandler.java:164)
    st.liotrox.servlet.CIPRequestHandler.renderPage(CIPRequestHandler.java:95)
    st.liotrox.servlet.CIPRequestHandler.sendResponse(CIPRequestHandler.java:51)
    st.liotrox.servlet.AbstractRequestHandler.doHandleRequest(AbstractRequestHandler.java:183)
    st.liotrox.servlet.AbstractRequestHandler.handleRequest(AbstractRequestHandler.java:133)
    st.liotrox.servlet.RequestFilterChain.executeRequest(RequestFilterChain.java:60)
    st.liotrox.servlet.filter.AbstractRejectRequestFilter.filterRequest(AbstractRejectRequestFilter.java:130)
    st.liotrox.servlet.filter.MaxUserRequestsFilter.filterRequest(MaxUserRequestsFilter.java:106)
    st.liotrox.servlet.RequestFilterChain.executeRequest(RequestFilterChain.java:56)
    st.liotrox.servlet.filter.AbstractRejectRequestFilter.filterRequest(AbstractRejectRequestFilter.java:130)
    st.liotrox.servlet.RequestFilterChain.executeRequest(RequestFilterChain.java:56)
    st.liotrox.servlet.FilteredRequestHandler.handleRequest(FilteredRequestHandler.java:72)
    st.liotrox.servlet.ApplicationServlet.delegatesExecutionToRequestHandler(ApplicationServlet.java:833)
    st.liotrox.servlet.ApplicationServlet.doMonitoredRequest(ApplicationServlet.java:811)
    st.liotrox.servlet.ApplicationServlet.executeRequest(ApplicationServlet.java:706)
    st.liotrox.servlet.ApplicationServlet.doService(ApplicationServlet.java:563)
    st.liotrox.servlet.ApplicationServlet.service(ApplicationServlet.java:498)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:729)

root cause

java.lang.NoClassDefFoundError: javax/persistence/EntityListeners
    org.hibernate.cfg.annotations.reflection.JPAMetadataProvider.getDefaults(JPAMetadataProvider.java:96)
    org.hibernate.annotations.common.reflection.java.JavaReflectionManager.getDefaults(JavaReflectionManager.java:226)
    org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1355)
    org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1826)
    com.st.wma.datalayer.hibernate.util.HibernateUtil.<clinit>(HibernateUtil.java:15)
    com.st.wma.datalayer.hibernate.logic.BaseManager.<init>(BaseManager.java:14)
    com.st.wma.datalayer.hibernate.logic.MapSearchManager.<init>(MapSearchManager.java:42)
    com.st.wma.page.mapsearch.MapSearchPage.beforeRender(MapSearchPage.java:44)
    st.liotrox.page.WPage.doWrite(WPage.java:1712)
    st.liotrox.page.WPage.write(WPage.java:1626)
    st.liotrox.servlet.CIPRequestHandler.doRenderPage(CIPRequestHandler.java:164)
    st.liotrox.servlet.CIPRequestHandler.renderPage(CIPRequestHandler.java:95)
    st.liotrox.servlet.CIPRequestHandler.sendResponse(CIPRequestHandler.java:51)
    st.liotrox.servlet.AbstractRequestHandler.doHandleRequest(AbstractRequestHandler.java:183)
    st.liotrox.servlet.AbstractRequestHandler.handleRequest(AbstractRequestHandler.java:133)
    st.liotrox.servlet.RequestFilterChain.executeRequest(RequestFilterChain.java:60)
    st.liotrox.servlet.filter.AbstractRejectRequestFilter.filterRequest(AbstractRejectRequestFilter.java:130)
    st.liotrox.servlet.filter.MaxUserRequestsFilter.filterRequest(MaxUserRequestsFilter.java:106)
    st.liotrox.servlet.RequestFilterChain.executeRequest(RequestFilterChain.java:56)
    st.liotrox.servlet.filter.AbstractRejectRequestFilter.filterRequest(AbstractRejectRequestFilter.java:130)
    st.liotrox.servlet.RequestFilterChain.executeRequest(RequestFilterChain.java:56)
    st.liotrox.servlet.FilteredRequestHandler.handleRequest(FilteredRequestHandler.java:72)
    st.liotrox.servlet.ApplicationServlet.delegatesExecutionToRequestHandler(ApplicationServlet.java:833)
    st.liotrox.servlet.ApplicationServlet.doMonitoredRequest(ApplicationServlet.java:811)
    st.liotrox.servlet.ApplicationServlet.executeRequest(ApplicationServlet.java:706)
    st.liotrox.servlet.ApplicationServlet.doService(ApplicationServlet.java:563)
    st.liotrox.servlet.ApplicationServlet.service(ApplicationServlet.java:498)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:729)

После поиска я обнаружил, что javax/persistence/EntityListeners является частью спецификации Java EE 5 / JPA 1.0.

Поскольку мой сервер (Tomcat) не имеет реализации JPA, я ищу версию Hibernate, в которой она не требуется. Какая это версия?

Большое спасибо.

Ответы [ 5 ]

3 голосов
/ 10 ноября 2012

для исправления ошибки "java.lang.NoClassDefFoundError: javax / persistence / EntityListeners" добавьте файл jar hibernate-jpa-2.0-api-1.0.1.Final.jar , который доступен в jpa папка домашнего каталога hibernate в качестве пути к классу в качестве значения ........ теперь скомпилируйте и выполните свою программу ...

3 голосов
/ 12 января 2011

В дополнение к другим ответам: до Hibernate 3.6 в Hibernate было несколько модулей, таких как Annotations, Entity Manager и Core. Последний является «оригинальным» Hibernate, без зависимости от JPA API. Начиная с версии 3.6, Аннотации и Entity Manager были объединены в Core. Тем не менее, вы все равно можете использовать Hibernate с любым автономным приложением или с сервлетами Servlet, такими как Tomcat. Вам просто нужен JPA API в classpath.

2 голосов
/ 12 января 2011

Если вы скачали дистрибутивный файл hibernate, у вас будут необходимые и дополнительные библиотеки в подпапке lib, просто добавьте их в путь к классам.

1 голос
/ 12 января 2011

Hibernate является реализацией JPA и, следовательно, нуждается в функционировании API jar-файлов. Вам не нужен Tomcat для самостоятельной реализации спецификации JPA.

Как подсказано в Запись форумов Hibernate 'java.lang.NoClassDefFoundError: javax / persistence / EntityList' вы должны найти JAR с именем hibernate-jpa-2.0-api-1.0.0.Final. баночка для спячки 3.6. Другие версии могут отличаться, но имена похожи и должны содержать jpa или persistence .

0 голосов
/ 12 января 2011

Hibernate нужен API JPA, если вы хотите использовать HibernateEntityManager, который поставляется в своем собственном Jar.Просто добавьте API.jar в ваш путь к классам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...