这是我第一次尝试实体 bean,我反复收到以下错误:
java.lang.IllegalStateException: Unable to retrieve EntityManagerFactory for unitName null
我使用 Netbeans 7.3 和 GlassFish 3.1.2.2 Server 编写了一个简单的实体 bean 示例。我的persistance.xml 文件似乎有问题。但是,我无法解决此问题。我读了
JavaEE 6:java.lang.IllegalStateException:无法为 unitName null 检索 EntityManagerFactory
无法为简单 EJB 检索 unitName null 的 EntityManagerFactory - 请参阅 nosferatum 答案
但几个小时后,我也无法解决这个问题。我附上了我的目录结构的屏幕截图以及我的 XML 文件的代码,希望有人能指出错误。
persistance.xml :(由 NetBeans 自动生成的代码)
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" 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_2_0.xsd">
<persistence-unit name="EnterpriseApplication3-ejbPU" transaction-type="JTA">
<jta-data-source>TestDatabase</jta-data-source>
<exclude-unlisted-classes>false</exclude-unlisted-classes>
<properties/>
</persistence-unit>
</persistence>
失败代码:
宣言 :
// This injects the default entity manager factory
@PersistenceUnit
private EntityManagerFactory emf;
调用点:
EntityManager em = emf.createEntityManager();
此外,一些人似乎这样做:
@PersistenceContext(unitName = "myPU")
并且在persistance.xml 中具有相同的名称。我快速搜索了所有项目文件,但没有找到 @PersistenceContext 注释。但我加了
@PersistenceContext(unitName = "EnterpriseApplication3-ejbPU")
到我调用 EntityManagerFactory 的代码。但仍然没有成功:(