2010-08-02 1 views
1

Название не понятно, поскольку я не мог придумать ни одного, но у меня есть проект EJB и я пытаюсь играть с JPA. Для создания менеджера сущностей я впрыскиванием в аннотацияхEntity Manager/файловая структура persistance

@PersistenceContext(unitName="testConnection") 
private EntityManager em; 

Когда я запускаю тестовый запрос, который я считаю, будет хорошо

Query userQuery = em.createQuery("SELECT u FROM TestUser u WHERE u.username = 'test' u.password = 'test'"); 
tu = (TestUser) userQuery.getSingleResult(); 

я получаю исключение, которое указывает по направлению к EJB не в состоянии для создания диспетчера объектов.

Самое странное в том, что, когда я бегу

tu = (TestUser) em.find(TestUser.class, id); 

он работает отлично

Моя структура проекта

EAR 
    EJB 
    EJB Client 
    JPA 
     persistance.xml 

, и я предполагаю, что это главная проблема

SEVERE: java.lang.IllegalSt ateException: невозможно получить EntityManagerFactory для unitName testConnection

Отдельные проекты в настоящее время связаны с использованием зависимостей.

Значит, любые мысли?

Благодаря Джон

ответ

4

У меня есть проект EJB, и я пытаюсь играть с JPA. Чтобы создать диспетчер сущности, я впрыскиваю его в аннотацию

Сама часть аннотации выглядит правильно.

когда я запускаю тестовый запрос, который я считаю, будет хорошо

Я не думаю, что это, это, по меньшей мере, отсутствует элемент И в ИНЕКЕ. Но я бы написать это на самом деле:

Query userQuery = em.createQuery("SELECT u FROM TestUser u WHERE u.username = :name AND u.password = :password"); 
userQuery.setParameter("name", "test"); 
userQuery.setParameter("password", "test"); 
tu = (TestUser) userQuery.getSingleResult(); 

я получаю исключение, которое указывает по направлению к EJB не в состоянии создать диспетчер сущностей. Странно то, что когда я бегу (...), он отлично работает.

Это странно, действительно, за исключением того, что вы получаете.

Моя структура проекта (...)

Я не знаю, если это опечатка или нет, но это persistence.xml, не persistance.xml, и он должен быть расположен в каталоге META-INF корня единицы сохранения.

Значит, любые мысли?

Закрепите запрос, исправьте упаковку persistence.xml. Также, пожалуйста, предоставьте свой контент и полную трассировку стека.

+0

ahh спасибо, что так много, имя постоянства было опечаткой. Это был взорванный запрос (я не могу поверить, что сам не видел) Я удивлен ошибкой, которую он дал, в результате искаженного запроса. Еще раз спасибо – Jon