Я использую Wildfly 8.1 вместе с EJB Project (EJB 3.2), содержащим объекты. При попытке привнести Entity менеджера в один из моих Фасоль я получаю следующее:Почему единица persistence имеет значение null, когда существует persistence.xml
JBAS011440: Can't find a persistence unit named null in deployment \"EntitiesProject.jar\""},
"JBAS014771: Services with missing/unavailable dependencies" => [
"jboss.deployment.unit.\"EntitiesProject.jar\".weld.weldClassIntrospector is missing [jboss.deployment.unit.\"EntitiesProject.jar\".beanmanager]",
"jboss.naming.context.java.comp.EntitiesProject.EntitiesProject.MitarbeiterDAO.HandleDelegate is missing [jboss.naming.context.java.comp.EntitiesProject.EntitiesProject.MitarbeiterDAO]",
"jboss.naming.context.java.comp.EntitiesProject.EntitiesProject.MitarbeiterDAO.InstanceName is missing [jboss.naming.context.java.comp.EntitiesProject.EntitiesProject.MitarbeiterDAO]",
"jboss.naming.context.java.comp.EntitiesProject.EntitiesProject.MitarbeiterDAO.InAppClientContainer is missing [jboss.naming.context.java.comp.EntitiesProject.EntitiesProject.MitarbeiterDAO]",
"jboss.naming.context.java.comp.EntitiesProject.EntitiesProject.MitarbeiterDAO.Validator is missing [jboss.naming.context.java.comp.EntitiesProject.EntitiesProject.MitarbeiterDAO]",
"jboss.naming.context.java.comp.EntitiesProject.EntitiesProject.MitarbeiterDAO.ORB is missing [jboss.naming.context.java.comp.EntitiesProject.EntitiesProject.MitarbeiterDAO]",
"jboss.naming.context.java.comp.EntitiesProject.EntitiesProject.MitarbeiterDAO.ValidatorFactory is missing [jboss.naming.context.java.comp.EntitiesProject.EntitiesProject.MitarbeiterDAO]"
]
Это мой SessionBean, где я пытаюсь привнести EntityManager:
@Stateless
public class MitarbeiterDAO implements MitarbeiterDAORemote {
@PersistenceContext
private EntityManager em;
public int writeMitarbeiterToDB(Mitarbeiter m)
{
em.persist(m);
return m.getId();
}
}
Я указанный следующий persistence.xml
файл который я назвал «project-name»/ejbModule/META-INF.
<persistence-unit name="mitarbeiter">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<jta-data-source>java:jboss/datasources/MySqlDS</jta-data-source>
<properties>
<property-name="hibernate.hbm2ddl.auto" value="create-drop"/>
</properties>
</persistence-unit>
Подобные вопросы и их решения
- Can't find persistence unit предлагает включать в persistence.xml
- Injecting entityManager in Wildfly/Jboss указывает на то, что там может быть другой каталог, где мой persistence.xml принадлежит. Я пробовал этот каталог, но все же получил то же сообщение об ошибке.
- Cannot find persistence unit from persistence.xml Хотя это не точно такой же вопрос, решение было добавить
<provider>
к persistence.xml, но это тоже не работает для меня
Update (см комментарии):
- I попытались использовать @EntityManager(unitName="mitarbeiter")
вместо чуть @EntityManager
- The Bean Session показано выше, является единственным местом, где я пытаюсь придать EntityManager
Update 2 (см комментарии ответа):
persistence.xml
находится в каталогеProject/ejbModule/META-INF/
- Этот каталог входит в путь сборки
- Как-то он не получает развернуты в то время как другие файлы в том же каталоге, (до
jar/META-INF/
). Если я копирую &, вставьте его вручную, он будет работать. Почему это?
Любая помощь и советы приветствуются.
Вы пробовали указания unitName' необязательное свойство 'на вашем' @ PersistenceContext' аннотацию? –
yes Я попытался использовать '@PersistenceContext (unitName =" mitarbeiter ")' вместо просто '@ PersistenceContext'. – Jbartmann
OK, только проверка. Это не должно быть необходимым, если не существует более одной единицы постоянства. –