2011-01-26 109 views
0

我使用jboss5.1.x EJB3.0JPA减速例外

我想用我的JPA第一次,当我运行服务器我得到这个异常:

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

..

这是我的“道”实体,负责对所有的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 如果我这样做,应该在里面声明什么?

谢谢, 射线。

+0

你已经尝试过Google吗? http://www.google.nl/search?persistence.xml – Gerbrand 2011-01-26 20:13:26

回答

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; 
}