我在J2EE编程中练习自己:我修改了Oracle J2EE教程converter's exampl e的源文件,将JPA代码放入其中并在GlassFish中部署。
使用现有的ANT配置,我正确编译和部署,但在运行时系统找不到 persistence.xml 。
这是已部署文件的结构。我把相同的文件xml放在更多地方以避开问题,但没有成功。
在 server.log 中,我找到了
引起:javax.persistence.PersistenceException:没有持久性 EntityManager的提供程序名为test
Glassfish支持JPA(我没有收到NoDefClassError的ClassnotFoundException,我没有任何类路径问题),持久性的id是唯一的,导致异常的指令是
Persistence.createEntityManagerFactory("test")
这是我的 persistence.xml 配置
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.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_1_0.xsd">
<persistence-unit name="test" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<class>converter2.ejb.Converter2Bean</class>
<class>entity.Order</class>
<properties>
<property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/JPA"/>
<property name="hibernate.connection.user" value="root"/>
<property name="hibernate.connection.driver" value="com.mysql.jdbc.Driver"/>
<property name="hibernate.connection.password" value="my_password"/>
<property name="default-schema" value="JPA"/>
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect"/>
<property name="hibernate.hbm2ddl.import_files" value="C:\\mysql\\crea.sql"/>
</properties>
</persistence-unit>
</persistence>
我把:
在目录 \ glassfish3 \ glassfish \ lib \ db 中,我重新启动了Glassfish。 我哪里错了?
答案 0 :(得分:0)
问题源于Glassfish无法找到Hibernate类,将它们放在域文件夹下的 lib / ext 文件夹中(例如: / glassfish3 / glassfish / domain / yourdomain / lib / ext )并重启Glassfish。