Как получить диспетчер управляемого объекта контейнера в JavaEE 6 без использования аннотаций

Как получить диспетчер управляемого объекта контейнера в JavaEE 6 без использования аннотаций

2 ответа

Вы можете попытаться получить менеджер сущностей, используя JNDI, как описано здесь: http://docs.oracle.com/cd/E16439_01/doc.1013/e13981/usclient005.htm

Дополнительно взгляните на раздел 7.2 ("Получение EntityManager") спецификации JPA.

Я нашел это решение, которое работает на Glassfish 3.1 (спасибо Томасу за ссылки):

@Stateless
@PersistenceContext(unitName = "myUnit", name="persistence/myUnit")
public class MyLibraryService {

   @TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
   public String getFirstName(String userId) {
     EntityManager em = (EntityManager) new InitialContext().lookup("java:comp/env/persistence/myUnit");

     TypedQuery<String> tq = em.createQuery("select fn from Person p where p.id = :userId", String.class);
     tq.setParameter("userId", userId);
     ...
   }

}

где myUnit имя подразделения, определенное в persistence.xml,

MyLibraryService может быть просто введен в другие классы:

@Inject
private MyLibraryService myLibraryService;
Другие вопросы по тегам