JPA跟单元测试的环境搭建
JPA和单元测试的环境搭建
(项目文件在 附件中)
1.创建Web工程 命名为: kubaSport
3.创建数据库
use master go if exists (select * from sysdatabases where name = 'kubaSport') drop database kubaSport go create database kubaSport on 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; @Entity public 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 { @BeforeClass public static void setUpBeforeClass() throws Exception { } @Test public void testGetTypeid() { } @Test public 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 这个字符串是?
其中 kubaSportPU 这个字符串是?