Моя система:
Eclipse Oxygen / JPA 2 / JSF 2.2 / Hibernate 4 / JBoss AS 7
Мое состояние:
У меня есть приложение с двумя постоянными единицами (PU), объявленными в persistence.xml
.
Моя ошибка JBoss:
Caused by: java.lang.IllegalArgumentException: JBAS011470: Persistence unitName was not specified and there are 2 persistence unit definitions in application deployment "test.war". Either change the application to have only one persistence unit definition or specify the unitName for each reference to a persistence unit.
at org.jboss.as.jpa.container.PersistenceUnitSearch.resolvePersistenceUnitSupplier(PersistenceUnitSearch.java:69)
at org.jboss.as.jpa.processor.JPAAnnotationParseProcessor.getPersistenceUnit(JPAAnnotationParseProcessor.java:284)
at org.jboss.as.jpa.processor.JPAAnnotationParseProcessor.getBindingSource(JPAAnnotationParseProcessor.java:220)
at org.jboss.as.jpa.processor.JPAAnnotationParseProcessor.processField(JPAAnnotationParseProcessor.java:151)
at org.jboss.as.jpa.processor.JPAAnnotationParseProcessor.processPersistenceAnnotations(JPAAnnotationParseProcessor.java:118)
at org.jboss.as.jpa.processor.JPAAnnotationParseProcessor.deploy(JPAAnnotationParseProcessor.java:90)
at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:113) [jboss-as-server-7.1.0.Final.jar:7.1.0.Final]
... 5 more
Myпроблема:
Я использую структуру, которая скрывает все детали в жизненном цикле EntityManager.Этот фреймворк предоставляет мне класс предков, и я строю весь свой код в подклассе, не заботясь об управлении EntityManager.
Этот класс предков не вводит или комментирует EntityManager, он создаетсякодом при необходимости в первый раз, но вышеупомянутое исключение выдается JBoss во время запуска приложения, когда у меня более одного PU.
Я написал код в предке, чтобы принять аннотацию @PersistenceUnit в моемподкласс и использовать имя, установленное в аннотации при создании EntityManagerFactory.Когда аннотации не используются, код находит первое имя PU и использует его.Итак, первый PU, существующий в persistence.xml
, понимается как имя PU по умолчанию.
Однако, даже не вводя никаких EntityManager, у меня все еще есть вышеупомянутое исключение.
Чего не хватает в моемрешение?