2010-08-02 38 views
1

标题不清楚,因为我无法想到一个,但是,我有一个EJB项目,并试图与JPA玩。要创建实体管理器,我在通过注释将其注入实体管理器/持久性文件结构

@PersistenceContext(unitName="testConnection") 
private EntityManager em; 

当我运行一个测试查询,我相信要罚款

Query userQuery = em.createQuery("SELECT u FROM TestUser u WHERE u.username = 'test' u.password = 'test'"); 
tu = (TestUser) userQuery.getSingleResult(); 

我得到它向EJB不能够指向异常创建实体管理器。

奇怪的是,当我运行

tu = (TestUser) em.find(TestUser.class, id); 

它工作正常

我的项目结构是

EAR 
    EJB 
    EJB Client 
    JPA 
     persistance.xml 

,我想这是主要的问题

SEVERE:java.lang.IllegalSt ateException:无法检索EntityManagerFactory for unitName testConnection

单个项目当前使用依赖项进行链接。

所以有什么想法?

感谢 乔恩

回答

4

我有一个EJB项目,我正在尝试使用JPA。要创建实体管理器,我通过注释注入它

注释部分本身看起来是正确的。

当我运行一个测试查询,我相信要罚款

,我不认为它是,它至少缺少一个和WHERE子句。不过,我会写这样的实际上是:

Query userQuery = em.createQuery("SELECT u FROM TestUser u WHERE u.username = :name AND u.password = :password"); 
userQuery.setParameter("name", "test"); 
userQuery.setParameter("password", "test"); 
tu = (TestUser) userQuery.getSingleResult(); 

我得到它向EJB不能够创建实体管理器指向一个例外。奇怪的是,当我运行(...)它工作正常。

鉴于您得到的例外,这确实很奇怪。

我的项目结构是(...)

我不知道这是否是一个错字或没有,但它persistence.xml,不persistance.xml,并应位于持久性单元根的META-INF目录下。

那么有什么想法?

修复查询,修复persistence.xml包装。另请提供其内容和完整的堆栈跟踪。

+0

ahh非常感谢你, 持久性名称是一个错字。 这是爆炸的查询(我不敢相信我自己看到它) 我很惊讶它给出的错误,作为一个格式错误的查询的结果。 再次感谢 – Jon 2010-08-02 09:46:32