我将Wildfly 8.1与包含实体的EJB项目(EJB 3.2)一起使用。当尝试将实体管理器注入我的一个Bean中时,我得到以下信息:
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]"
]
这是我尝试注入EntityManager的SessionBean:
@Stateless
public class MitarbeiterDAO implements MitarbeiterDAORemote {
@PersistenceContext
private EntityManager em;
public int writeMitarbeiterToDB(Mitarbeiter m)
{
em.persist(m);
return m.getId();
}
}
我指定了以下persistence.xml
文件,放入“项目名称” / 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>
类似问题及其解决方案
<provider>
,但解决方案是在persistence.xml中添加一个,但这对我也不起作用更新(请参阅评论):
-我尝试使用@EntityManager(unitName="mitarbeiter")
而不是仅仅使用@EntityManager
-上面显示的Session Bean是我尝试注入的唯一位置EntityManager
更新2(请参阅答案注释):
persistence.xml
在目录中 Project/ejbModule/META-INF/
jar/META-INF/
)时,不知何故没有部署它。如果我手动复制并粘贴它,则可以正常工作。这是为什么?任何帮助和提示,我们将不胜感激。
几个可能的问题:
persistence.xml
文件的位置不正确。请将其放在META-INF/
存档根目录中。如果您使用Maven的话src/main/resources/META-INF/persistence.xml
。persistence.xml
文件:您的persistence-unit
代码行已关闭<persistence-unit name="mitarbeiter"/>
(请/
在结尾处注意)<property-name="hibernate.hbm2ddl.auto" value="create-drop"/>
是无效的。我想你想要:<property name="hibernate.hbm2ddl.auto" value="create-drop" />
通常,persistence.xml
您所用的JPA 2.1 正确内容应如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://xmlns.jcp.org/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd"
version="2.1">
<persistence-unit name="mitarbeiter">
<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
<jta-data-source>java:jboss/datasources/MySqlDS</jta-data-source>
<properties>
<property name="hibernate.hbm2ddl.auto" value="create-drop" />
</properties>
</persistence-unit>
</persistence>
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句