(项目文件在 附件中)
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)
* */
}
}