Java 实体管理器/持久性文件结构

Java 实体管理器/持久性文件结构,java,orm,jpa,persistence,ejb-3.0,Java,Orm,Jpa,Persistence,Ejb 3.0,标题不清楚,因为我想不出一个,但是,我有一个EJB项目,正在尝试使用JPA。要创建实体管理器,我将通过注释将其注入 @PersistenceContext(unitName="testConnection") private EntityManager em; 当我运行一个我认为很好的测试查询时 Query userQuery = em.createQuery("SELECT u FROM TestUser u WHERE u.username = 'test' u.password =

标题不清楚,因为我想不出一个,但是,我有一个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
我想这是主要的问题

严重:java.lang.IllegalStateException:无法检索unitName testConnection的EntityManagerFactory

当前使用依赖项链接各个项目

有什么想法吗

谢谢
Jon

我曾经写过一个实体管理器,但目前我无法访问代码,但请查看此页面和底部链接的页面:


我曾经编写过一个实体管理器,但目前无法访问代码,但请查看此页面和底部链接的页面:

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

注释零件本身看起来是正确的

当我运行一个我认为很好的测试查询时

Query userQuery = em.createQuery("SELECT u FROM TestUser u WHERE u.username = 'test' u.password = 'test'");
tu = (TestUser) userQuery.getSingleResult();
我不认为是这样,至少在WHERE子句中缺少AND。但实际上我会这样写:

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,而不是persistence.xml,它应该位于持久性单元根目录的META-INF目录中

有什么想法吗

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

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

注释零件本身看起来是正确的

当我运行一个我认为很好的测试查询时

Query userQuery = em.createQuery("SELECT u FROM TestUser u WHERE u.username = 'test' u.password = 'test'");
tu = (TestUser) userQuery.getSingleResult();
我不认为是这样,至少在WHERE子句中缺少AND。但实际上我会这样写:

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,而不是persistence.xml,它应该位于持久性单元根目录的META-INF目录中

有什么想法吗


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

ahh非常感谢您,持久性名称是一个输入错误。这是一个糟糕的查询,我不敢相信我自己没有看到它。我对它给出的错误感到惊讶,这是一个错误查询的结果。再次感谢!非常感谢,持久性名称是一个拼写错误。这是一个糟糕的查询,我不敢相信我自己没有看到它。我对它给出的错误感到惊讶,这是一个错误查询的结果。再次感谢