java - JPA减速异常

标签 java jpa jboss ejb

我使用的是jboss5.1.x EJB3.0

我第一次尝试使用 JPA,当我运行服务器时出现此异常:

java.lang.IllegalArgumentException: Can't find a persistence unit named 'java:/mracDS' 

..

这是我的“DAO”实体,负责所有 JPA 实体:

  @Stateless
  public class ECMSEntityManagerDao implements ECMSEntityManagerDaoLocal, ECMSEntityManagerDaoRemote
     {
    @PersistenceContext(unitName = "java:/mracDS")
     EntityManager em;


     public ArrayList<T01CounterCalls> getClocksDetailsFromVantive() throws SQLException
      {
              return (ArrayList<T01CounterCalls>) em.createQuery ("from T01CounterCalls      as data").getResultList ();

       }


     }

我在网上查了一下: 我从未声明 persistence.xml 如果我这样做,里面应该声明什么?

谢谢, 射线。

最佳答案

从外观上看,我的猜测是您将持久性单元数据源混淆了。

这两个可能感觉很相似,但其实不然。非常简单地说,持久性单元是一组类加上关联的数据源。在最基本的形式中,持久性单元仅耦合到数据源:

persistence.xml:

<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="1.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"      
>    
    <persistence-unit name="mracPU">
        <jta-data-source>java:/mracDS</jta-data-source>
    </<persistence-unit>
</persistence>

然后将持久性单元名称与注入(inject)注释一起使用:

@Stateless
public class ECMSEntityManagerDao implements ECMSEntityManagerDaoLocal, ECMSEntityManagerDaoRemote {

    @PersistenceContext(unitName = "mracPU")
    EntityManager em;
}

关于java - JPA减速异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4806223/

相关文章:

java - SQL 查询太复杂而无法在 JPA Criteria API 中表达?

java - JBoss EAP 6.1 与 Tomcat 7

java - 使用 auth-method=CLIENT-CERT 时如何避免在 glassfish-web.xml 文件中添加主体?

java - 如何删除 Windows 7 快捷键

mysql - JPA 中的总时间字段值

java - x64/x86 上的 QueryDSL NumberPath/SimplePath 混合

java - Wildfly 13.0.0.FINAL 支持 OpenJDK 8.0 吗?

Grails 和 JBoss AS/EAP 日志记录未打印

java - 仅当互联网连接可用时才允许切换

java - 捕获Java进程Jmap输出