Entity Manager / структура файла персистентности - PullRequest
1 голос
/ 02 августа 2010

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

@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.IllegalStateException: невозможно получить EntityManagerFactory для unitName testConnection

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

Так что есть мысли?

Спасибо Джон

Ответы [ 2 ]

4 голосов
/ 02 августа 2010

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

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

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

Я не думаю, что, по крайней мере, отсутствует предложение AND в предложении WHERE.Но на самом деле я бы написал так:

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 голосов
/ 02 августа 2010

Я однажды написал менеджер сущностей, но в данный момент я не могу получить доступ к коду, но взгляну на эту страницу и ссылки внизу:

http://www.javabeat.net/articles/91-ejb-30-entity-manager-2.html

...