为什么在存在persistence.xml时将持久性单元命名为null

贾巴特曼:

我将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>

类似问题及其解决方案

更新(请参阅评论):
-我尝试使用@EntityManager(unitName="mitarbeiter")而不是仅仅使用@EntityManager-上面显示的Session Bean是我尝试注入的唯一位置EntityManager

更新2(请参阅答案注释):

  • persistence.xml 在目录中 Project/ejbModule/META-INF/
  • 该目录包含在构建路径中
  • 相同目录中的其他文件位于(to jar/META-INF/)时,不知何故没有部署它如果我手动复制并粘贴它,则可以正常工作。这是为什么?

任何帮助和提示,我们将不胜感激。

G.德梅基:

几个可能的问题:

  • 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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

持久性单元错误:javax.persistence.PersistenceException:没有名为EntityManager的持久性提供程序

在VBA中实现接口时,为什么将参数重命名为RHS?

为什么将Golang接口命名为“接口”?

Persistence.createEntityManagerFactory()在哪里寻找持久性单元?

引起:java.lang.IllegalStateException:没有从 {classpath*:META-INF/persistence.xml} 解析的持久性单元

Laravel-为什么在.env已经存在的情况下,laravel要求将.env.example重命名为.env?

为什么我可以在不定义持久性单元的情况下注入entityManager?

什么是“修复点”,为什么命名为“修复点”?

为什么将提交按钮命名为“ submit”,我的表单却不提交?

为什么将微服务分布式交易的模式命名为SAGA?

为什么将异常命名为选中和未选中?

为什么Java程序员喜欢将变量命名为“ clazz”?

为什么将反应堆设计模式命名为反应堆?

为什么无法将文件从“ NAME”重命名为“ name”?

为什么将Apache命名为Web服务器Apache和Tomcat?

人们为什么将文件命名为index.html?

为什么将Ruby的悲观运算符命名为悲观?

为什么在Python中无法将类属性命名为保留字?

为什么将docker pgadmin和postgres服务命名为“。\”?

javax.persistence.PersistenceException:没有名为XX的EntityManager的持久性提供程序

javax.persistence.PersistenceException:没有名为enterManager的EntityManager的持久性提供程序

javax.persistence.PersistenceException:没有名为 aramis 的 EntityManager 的持久性提供程序

Java-JPA-为什么在persistence.xml文件中需要多个<persistence-unit>标记?

为什么Angular JS被命名为Angular JS?

为什么在Python中将“ dir()”命名为“ dir”?

为什么命名为“下划线”或“ lodash”?

为什么案例类被命名为“案例”?

Rxjava为什么Schedulers.trampoline()命名为“ trampoline”?

为什么Null值应该存在PHP?