读书人

JPA跟单元测试的环境搭建

发布时间: 2012-10-17 10:25:47 作者: rapoo

JPA和单元测试的环境搭建

(项目文件在 附件中)

1.创建Web工程 命名为: kubaSport

3.创建数据库

use mastergoif exists (select * from sysdatabases where name = 'kubaSport')drop database kubaSportgocreate database kubaSporton primary(name='kubaSport_data',filename='D:\kubaSport_data.mdf',size = 3mb,maxsize = 200mb,filegrowth = 1mb)log on(name= 'kubaSport_log',filename='D:\kubaSport_log.ldf',size = 2mb,filegrowth=1mb)go

?

2.把MyElipse编辑器切换到 MyEclipseDatabaseExplorer项

?

建立DB Briwser 连接到kubaSport数据库

?

3. 切换回MyElipse Java编辑器

点击项目,然后点击工具栏 MyElipse —— 选择 第一项 capabilities ——选择 JPA

然后选择刚刚创建好的 DB Briwser

JPA环境就搭建好了

?

4.进行单元测试(这一步我有一点点小问题 ,麻烦大家帮我看一下)

?

(1.)创建实体类

import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.GenerationType;import javax.persistence.Id;@Entitypublic class ProductType {@Id @GeneratedValue(strategy=GenerationType.AUTO) //创建由hibernate判断的数据库主键 private Integer typeid;public Integer getTypeid() {return typeid;}public void setTypeid(Integer typeid) {this.typeid = typeid;}}

?

在创建过程中:@Entity 可能会报错 直接删掉该标记:@Entity 和 import javax.persistence.Entity;

然后重新 标记:@Entity? 保存就不会报错了。

?

(2.)对该类进行单元测试

import javax.persistence.EntityManager;import javax.persistence.EntityManagerFactory;import javax.persistence.Persistence;import net.liuyang.bean.product.ProductType;import org.junit.BeforeClass;import org.junit.Test;public class ProductTypeTest {@BeforeClasspublic static void setUpBeforeClass() throws Exception {}@Testpublic void testGetTypeid() {}@Testpublic void testSetTypeid() {Persistence.createEntityManagerFactory("kubaSportPU");     //EntityManagerFactory factory = Persistence.createEntityManagerFactory("kubaSportPU");  //创建实体类管理工厂//EntityManager em = factory.createEntityManager();//创建实体类管理器//em.getTransaction().begin();//开启事务//em.persist(new ProductType());//这一步不太明白 字面意思是保存吧//em.getTransaction().commit();//提交事务//em.close();//关闭实体类管理器//factory.close();//关闭工厂
/* * 上面注释掉部分测试后会报这个错误,但是数据库仍然可以创建该实体类的数据库表 * java.lang.NoSuchMethodError: org.hibernate.event.PreInsertEvent.getSource()Lorg/hibernate/engine/SessionImplementor;at org.hibernate.validator.event.ValidateEventListener.onPreInsert(ValidateEventListener.java:172)at org.hibernate.action.EntityIdentityInsertAction.preInsert(EntityIdentityInsertAction.java:142)at org.hibernate.action.EntityIdentityInsertAction.execute(EntityIdentityInsertAction.java:65)at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:279)at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:321)at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:204)at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:130)at org.hibernate.ejb.event.EJB3PersistEventListener.saveWithGeneratedId(EJB3PersistEventListener.java:49)at org.hibernate.event.def.DefaultPersistEventListener.entityIsTransient(DefaultPersistEventListener.java:154)at org.hibernate.event.def.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:110)at org.hibernate.event.def.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:61)at org.hibernate.impl.SessionImpl.firePersist(SessionImpl.java:645)at org.hibernate.impl.SessionImpl.persist(SessionImpl.java:619)at org.hibernate.impl.SessionImpl.persist(SessionImpl.java:623)at org.hibernate.ejb.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:220)at junit.test.ProductTypeTest.testSetTypeid(ProductTypeTest.java:33)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)at java.lang.reflect.Method.invoke(Unknown Source)at org.junit.internal.runners.TestMethodRunner.executeMethodBody(TestMethodRunner.java:99)at org.junit.internal.runners.TestMethodRunner.runUnprotected(TestMethodRunner.java:81)at org.junit.internal.runners.BeforeAndAfterRunner.runProtected(BeforeAndAfterRunner.java:34)at org.junit.internal.runners.TestMethodRunner.runMethod(TestMethodRunner.java:75)at org.junit.internal.runners.TestMethodRunner.run(TestMethodRunner.java:45)at org.junit.internal.runners.TestClassMethodsRunner.invokeTestMethod(TestClassMethodsRunner.java:66)at org.junit.internal.runners.TestClassMethodsRunner.run(TestClassMethodsRunner.java:35)at org.junit.internal.runners.TestClassRunner$1.runUnprotected(TestClassRunner.java:42)at org.junit.internal.runners.BeforeAndAfterRunner.runProtected(BeforeAndAfterRunner.java:34)at org.junit.internal.runners.TestClassRunner.run(TestClassRunner.java:52)at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:38)at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196) * */}}

?

1 楼 wxy5001 2010-05-13 Persistence.createEntityManagerFactory("kubaSportPU");

其中 kubaSportPU 这个字符串是?

读书人网 >软件架构设计

热点推荐