java - 没有名为 ws-persist 的 EntityManager 持久性提供程序

标签 java jakarta-ee jpa jersey jax-rs

我正在构建 JAX-RS Web 服务( Jersey ),现在我尝试开始使用 JPA。我选择了 eclipselink 来管理这种持久性。

首先,我正在编写一些 junit 测试用例,直到弄清楚所有内容如何组合在一起。

在我的 persistence.xml (WEB-INF/persistence.xml) 中,我有:

<?xml version="1.0" encoding="UTF-8" ?>
<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"
version="2.0" xmlns="http://java.sun.com/xml/ns/persistence">
<persistence-unit name="ws-persist" transaction-type="RESOURCE_LOCAL">
    <class>beans.Change</class>
    <properties>
        <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" />
        <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3333/tomcat" />
        <property name="javax.persistence.jdbc.user" value="tomcat" />
        <property name="javax.persistence.jdbc.password" value="...." />
        <property name="eclipselink.ddl-generation" value="create-tables" />
        <property name="eclipselink.ddl-generation.output-mode" value="database" />
    </properties>
</persistence-unit>

在我的测试课上,我有。

public class PersistenceTests {

private EntityManager em = null;

@Before
public void setUp() throws Exception {      
    Properties propertiesMap = new Properties();
    propertiesMap.put(PersistenceUnitProperties.DDL_GENERATION, PersistenceUnitProperties.DROP_AND_CREATE);

    EntityManagerFactory  factory = Persistence.createEntityManagerFactory("ws-persist", propertiesMap);
    em = factory.createEntityManager();
}

@After
public void tearDown() throws Exception {
}

@Test
public void testSetUp(){
    Assert.assertNotNull("Entity manager was null", em);
    Assert.assertTrue("Entity manager wasn't connected", em.isOpen());
}
}

我的 WEB-INF/lib 文件夹下有 eclipselink.jar 和两个 javax.persistence_*.jar。 我遇到了标题中提到的异常,有人可以帮我弄清楚如何解决这个问题吗?

谢谢。

最佳答案

我会尝试在 persistence.xml 中添加持久性提供程序

<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>

(编辑)或将 persistence.xml 移动到 META-INF 文件夹。对于网络应用程序,这必须位于 WEB-INF/classes

关于java - 没有名为 ws-persist 的 EntityManager 持久性提供程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8097633/

相关文章:

java - 我正在做条形码扫描仪。但我可以在 TextView 中显示我的 resultCode 。

java - 不使用方法参数的接口(interface)实现

java - 如何缓存分区数据集并在多个查询中使用?

jakarta-ee - response.SendRedirect ("Location"上的 java.lang.IllegalStateException )

java - 如何在 Eclipse Kepler 中添加 Web 工具平台 (WTP)

java - 如何处理JPA命名查询中数字类型的空值

java - 通过 Runtime.exec() 命令在 java 中终止进程时如何获得异常?

jakarta-ee - 任何类型的查询都找不到持久化实体

java - 从 persistence.xml 注入(inject) PersistenceContext

java - 比较 JPA 中的整数