EntityManager.unwrap () выбрасывает java.lang.AbstractMethodError - PullRequest
3 голосов
/ 09 августа 2011

У меня возникли проблемы с реализацией JPA 2.0 в моем приложении. Я использую запросы Criteria, и мне нужно получить сеанс из EntityManager. Я делаю это следующим образом (согласно this ) Session ses = entityManager.unwrap (Session.class);

После запуска поверх Tomcat 7.0.8 я получаю следующее:

Struts has detected an unhandled exception:
# Messages:     org.hibernate.ejb.EntityManagerImpl.unwrap(Ljava/lang/Class;)Ljava/lang/Object;

Stacktraces 
java.lang.reflect.InvocationTargetException
java.lang.AbstractMethodError: org.hibernate.ejb.EntityManagerImpl.unwrap(Ljava/lang/Class;)Ljava/lang/Object; sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

Также я ссылаюсь на следующие зависимости, связанные с Hibernate (где я подозреваю, что проблема):

hibernate-3.2.5.ga.jar
hibernate-annotations-3.4.0.GA.jar
hibernate-commons-annotations-3.1.0.GA.jar
hibernate-core-3.3.0.GA.jar
hibernate-entitymanager-3.4.0.GA.jar
hibernate-jpa-2.0-api-1.0.0.Final.jar

Есть идеи по этому поводу?

Ответы [ 2 ]

4 голосов
/ 09 августа 2011

Hibernate 3.4.x не совместим с JPA-2. JPA 2 впервые был поддержан в Hibernate Entitymanager 3.5.0 .

Полученная ошибка означает, что ClassLoader не может найти метод реализации для метода интерфейса, к которому вы обращаетесь, что имеет смысл, если базовая реализация соответствует только JPA-1, поскольку в JPA 2 была добавлена ​​развертка. .

0 голосов
/ 02 августа 2017

Я использую старую версию Hibernate (3.3.0) с новейшей версией OpenEJB (4.6.0).Мое решение было:

EntityManagerImpl entityManager = (EntityManagerImpl)em.getDelegate();
Session session = entityManager.getSession();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...