标题不清楚,因为我想不到一个,但是,我有一个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.IllegalStateException:无法为unitName testConnection检索EntityManagerFactory
目前,各个项目使用依赖关系进行链接。
所以有什么想法吗?
由于 乔恩
答案 0 :(得分:4)
我有一个EJB项目,我正在尝试使用JPA。要创建实体管理器,我将通过注释
注入它
注释部分本身看起来是正确的。
当我运行一个我认为没问题的测试查询时
我认为不是,它至少在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
,而不是persistance.xml
,它应该位于持久性单元根目录的META-INF目录中。
所以有什么想法吗?
修复查询,修复persistence.xml
包装。另请提供其内容和完整的堆栈跟踪。
答案 1 :(得分:0)
我曾经写过一个实体经理,但目前我无法访问代码,但看看这个页面以及底部链接的那些:
http://www.javabeat.net/articles/91-ejb-30-entity-manager-2.html