我正在尝试使用JPA为我目前参与的Java-EE项目设置持久性,并且我遇到了很多配置问题.目前,我已在persistence.xml中定义了一个RESOURCE_LOCAL持久性单元,目的是在解决设置JTA持久性单元及其相应JTA数据源的问题之前,在单元测试中使用此单元并验证其他所有工作.然而,即使这种"简单"的情况也会导致错误.
详细地:
我得到的错误是这样的:
javax.persistence.PersistenceException: No Persistence provider for EntityManager named kronosTestLocal
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:69)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:47)
at persistence.EntityManagerTest.getStaff(EntityManagerTest.java:56)
at persistence.EntityManagerTest.setup(EntityManagerTest.java:17)
...
Run Code Online (Sandbox Code Playgroud)
抛出错误的代码片段是JUnit测试中的以下内容:
private final String persistenceUnitName = "kronosTestLocal";
....
final EntityManagerFactory entityManagerFactory =
Persistence.createEntityManagerFactory(persistenceUnitName);
Run Code Online (Sandbox Code Playgroud)
persistence.xml(在META-INF中并在intellij JPA facet中声明):(我尝试删除kronos持久性单元,以防它以某种方式干扰,但这没有帮助)
<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="2.0">
<persistence-unit name="kronos" transaction-type="JTA">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<jta-data-source>jdbc/kronos-database</jta-data-source>
<class>persistence.entities.DaySlotsEntity</class>
<class>persistence.entities.DaysEntity</class>
<class>persistence.entities.EmailNotificationsEntity</class>
<class>persistence.entities.EmailSendingTimestampsEntity</class>
<class>persistence.entities.GroupSlotsEntity</class>
<class>persistence.entities.GroupsEntity</class>
<class>persistence.entities.InterviewerEntity</class>
<class>persistence.entities.InterviewerPreferencesEntity</class>
<class>persistence.entities.InterviewerUnavailableDaysEntity</class>
<class>persistence.entities.InterviewerWorkloadEntity</class>
<class>persistence.entities.InterviewsEntity</class>
<class>persistence.entities.PreferenceTypesEntity</class>
<class>persistence.entities.PreferencesEntity</class>
<class>persistence.entities.StaffEntity</class>
<class>persistence.entities.StudentsEntity</class>
<class>persistence.entities.SwapsEntity</class>
</persistence-unit>
<persistence-unit name="kronosTestLocal" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<class>persistence.entities.DaySlotsEntity</class>
<class>persistence.entities.DaysEntity</class>
<class>persistence.entities.EmailNotificationsEntity</class>
<class>persistence.entities.EmailSendingTimestampsEntity</class>
<class>persistence.entities.GroupSlotsEntity</class>
<class>persistence.entities.GroupsEntity</class>
<class>persistence.entities.InterviewerEntity</class>
<class>persistence.entities.InterviewerPreferencesEntity</class>
<class>persistence.entities.InterviewerUnavailableDaysEntity</class>
<class>persistence.entities.InterviewerWorkloadEntity</class>
<class>persistence.entities.InterviewsEntity</class>
<class>persistence.entities.PreferenceTypesEntity</class> …Run Code Online (Sandbox Code Playgroud)