java - 尝试对 java 持久性实体管理器进行单元测试时无法获取数据源

标签 java jpa eclipselink datasource

我对 JPA 相当陌生,我想测试我的 EntityManagers 持久性/删除等。我不断收到无法获取的错误 数据源 。我完全迷失了,我在网上搜索了几个小时,但在网上找不到(或至少理解)任何答案。任何帮助,将不胜感激。谢谢!

这是测试类。

@Transactional
public class DoctorRepositoryTest
{
   private DoctorRepository dr;
   private Doctor doctor;
   private EntityManagerFactory emf
       = Persistence.createEntityManagerFactory("TestPersistence");
  private  EntityManager em = null;


public DoctorRepositoryTest()
{
}

@BeforeClass
public static void setUpClass()
{

}

@AfterClass
public static void tearDownClass()
{
}

@Before
public void setUp()
{




  dr = new DoctorRepository();

  doctor = new Doctor(0,"doctorFirstName", "doctorLastName", "4032223333", 
  "123 45 ave NW","Calgary", "AB", "t3k5c9");


}

@After
public void tearDown()
{
   dr = null;
   doctor = null;
}

/**
 * Testings method for the insertion of Doctor Objects to
 * the database
 */
@Test
public void testInsert(){



    int result;
    EntityManager em = emf.createEntityManager();
     try
   {
      em.getTransaction().begin();
      em.persist(doctor);
      em.getTransaction().commit();
      result = 1;
   }
     catch(Exception e){

        result = 0;
     }
   finally
   {
      em.close();
   }

     assertEquals(result,1);

}

这是我的持久性 xml

    <persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence"            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"       xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence   http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
  <persistence-unit name="SunrisePU" transaction-type="JTA">
   <jta-data-source>SunriseDB</jta-data-source>
   <exclude-unlisted-classes>false</exclude-unlisted-classes>
    <properties/>
  </persistence-unit>
  <persistence-unit name="TestPersistence" transaction-type="RESOURCE_LOCAL">
    <jta-data-source>SunriseDB</jta-data-source>
    <properties>
    </properties>
  </persistence-unit>
</persistence>

我不断收到的错误是。

[EL Info]: 2016-03-27 12:50:44.151--ServerSession(957465255)--EclipseLink, version: Eclipse Persistence Services - 2.5.2.v20140319-9ad6abd

[EL Severe]: ejb: 2016-03-27 12:50:48.588--ServerSession(957465255)--Exception     
[EclipseLink-7060] (Eclipse Persistence Services - 2.5.2.v20140319-9ad6abd): org.eclipse.persistence.exceptions.ValidationException

异常描述:无法获取数据源[SunriseDB]。

错误还有很多,但根本原因是我无法连接到数据库进行测试。

最佳答案

问题可能在于 persistence.xml 文件的属性部分中没有任何内容...

    <properties>
        <property name="javax.persistence.jdbc.url" value="jdbc:mysql://127.0.0.1:3306/prytest"/>
        <property name="javax.persistence.jdbc.user" value="root"/>
        <property name="javax.persistence.jdbc.password" value="root"/>
        <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
    </properties>

根据您的 DBMS(在我的例子中是 MySql)检查驱动程序的正确配置

关于java - 尝试对 java 持久性实体管理器进行单元测试时无法获取数据源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36251324/

相关文章:

java - 未填写所有 Spring 表单字段并收到错误请求错误 400

java - 多对一搜索查询

java - 如何在 Java 中更改要回复的电子邮件地址

java - 在 Android 的抽屉导航中创建子菜单

java - 使 jpa oneToMany 关系有效?

java - 需要有关 Java、JPA、Thymeleaf 和 Mysql 的帮助

java - 将名为 EMPLOYEE 的枚举映射到 VARCHAR 鉴别符值 'M'

java - 如何使用 JPA 2 二级缓存的另一个实现?

postgresql - 带有 GlassFish 4 和 PostGIS 的 JPA 实体

java - 如何删除或更新 ObservableList 中的某些行