JPA减速异常

时间:2011-01-26 15:19:13

标签: 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 如果我这样做,应该在里面宣布什么?

感谢, 射线。

1 个答案:

答案 0 :(得分:2)

从我看来,我的猜测是你将persistence unitdata source混为一谈。

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

<强>的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>

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

@Stateless
public class ECMSEntityManagerDao implements ECMSEntityManagerDaoLocal, ECMSEntityManagerDaoRemote {

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