Использование нескольких persistence unit в одном проекте.
Когда в проекте несколько персистенс юнитов, возникает такой эксепшн :
SEVERE: Exception while invoking class org.glassfish.persistence.jpa.JPADeployer prepare method
SEVERE: java.lang.RuntimeException: Could not resolve a persistence unit corresponding to the persistence-context-ref-name [com.str.testpu.facade.UserFacade/em] in the scope of the module called [StrTestPU]. Please verify your application.
Например в проекте два персистент юнита. Контейнер не может определить какой из них грузить. Это решается заданием имен персистент контекстам с разными юнитами, таким образом в web.xml достаточно добавить :
<persistence-unit-name> - тут пишем имя юнита которое указано в persistence.xml.
Инъекции выглядят так:
В эксперименте принимали участие: Glassfish 4, Netbeans 7.4, EJB, JPA, EclipseLink, MySql, Maven.
Вот интересная статья по этому поводу, а также пример.
А документация наше всё.
SEVERE: Exception while invoking class org.glassfish.persistence.jpa.JPADeployer prepare method
SEVERE: java.lang.RuntimeException: Could not resolve a persistence unit corresponding to the persistence-context-ref-name [com.str.testpu.facade.UserFacade/em] in the scope of the module called [StrTestPU]. Please verify your application.
Например в проекте два персистент юнита. Контейнер не может определить какой из них грузить. Это решается заданием имен персистент контекстам с разными юнитами, таким образом в web.xml достаточно добавить :
<persistence-context-ref> <persistence-context-ref-name>persistence/userPC</persistence-context-ref-name> <persistence-unit-name>userPU</persistence-unit-name> </persistence-context-ref> <persistence-context-ref> <persistence-context-ref-name>persistence/homePC</persistence-context-ref-name> <persistence-unit-name>homePU</persistence-unit-name> </persistence-context-ref><persistence-context-ref-name> - тут обозначается некое имя задаваемое произвольно. Как советует документация лучше начинать с persistence.
<persistence-unit-name> - тут пишем имя юнита которое указано в persistence.xml.
Инъекции выглядят так:
@PersistenceContext( name="persistence/homePC" unitName = "homePU")
private EntityManager em;
@PersistenceContext( name = "persistence/userPC", unitName = "userPU")
private EntityManager em;
Атрибут name в @PersistenceContext должен совпадать с значением <persistence-context-ref-name> в web.xml, и unitName соответственно с <persistence-unit-name>.В эксперименте принимали участие: Glassfish 4, Netbeans 7.4, EJB, JPA, EclipseLink, MySql, Maven.
Вот интересная статья по этому поводу, а также пример.
А документация наше всё.
0 comments:
Отправить комментарий