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");