這是主類:
public class Main {
public static void main(String[] args) {
//1. 創建EntitymanagerFactory
String persistenceUnitName = "jpa-1";
EntityManagerFactory entityManagerFactory =
Persistence.createEntityManagerFactory(persistenceUnitName);
//2. 創建EntityManager
EntityManager entityManager = entityManagerFactory.createEntityManager();
//3. 開戶事務
EntityTransaction transaction = entityManager.getTransaction();
transaction.begin();
//4. 進行持久化操作
Customer customer = new Customer();
customer.setAge(13);
customer.setEmail("[email protected]");
customer.setLastName("Tom");
customer.setCreatedTime(new Date());
entityManager.persist(customer);
//5. 提交事務
transaction.commit();
//6. 關閉EntityManager
entityManager.close();
//7. 關閉EntityManagerFactory
entityManagerFactory.close();
}
}
物體類:
@Table(name = "JPA_CUSTOMERS")
@Entity
public class Customer {
private Integer id;
private String lastName;
private String email;
private int age;
private Date createdTime;
@GeneratedValue(strategy = GenerationType.AUTO)
@Id
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
@Column(name = "LAST_NAME")
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Temporal(TemporalType.DATE)
public Date getCreatedTime() {
return createdTime;
}
public void setCreatedTime(Date createdTime) {
this.createdTime = createdTime;
}
@Override
public String toString() {
return "Customer{" +
"id=" + id +
", lastName='" + lastName + '\'' +
", email='" + email + '\'' +
", age=" + age +
", createdTime=" + createdTime +
'}';
}
}
persistence.xml組態檔:
<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="2.0">
<persistence-unit name="jpa-1" transaction-type="RESOURCE_LOCAL">
<!--
配置使用什么 ORM 產品來作為 JPA 的實作
1. 實際上配置的是 javax.persistence.spi.PersistenceProvider 介面的實作類
2. 若 JPA 專案中只有一個 JPA 的實作產品, 則也可以不配置該節點.
-->
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<!-- 添加持久化類 -->
<class>com.atguigu.jpa.helloworld.Customer</class>
<properties>
<!-- 連接資料庫的基本資訊 -->
<property name="javax.persistence.jdbc.driver" value="https://bbs.csdn.net/topics/com.mysql.jdbc.Driver"/>
<property name="javax.persistence.jdbc.url" value="https://bbs.csdn.net/topics/jdbc:mysql:///jpa"/>
<property name="javax.persistence.jdbc.user" value="https://bbs.csdn.net/topics/root"/>
<property name="javax.persistence.jdbc.password" value="https://bbs.csdn.net/topics/root"/>
<!-- 配置 JPA 實作產品的基本屬性. 配置 hibernate 的基本屬性 -->
<property name="hibernate.format_sql" value="https://bbs.csdn.net/topics/true"/>
<property name="hibernate.show_sql" value="https://bbs.csdn.net/topics/true"/>
<property name="hibernate.hbm2ddl.auto" value="https://bbs.csdn.net/topics/update"/>
</properties>
</persistence-unit>
</persistence>
運行時具體報錯:
Exception in thread "main" javax.persistence.PersistenceException: Unable to configure EntityManagerFactory
at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:387)
at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:58)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:63)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:47)
at com.atguigu.jpa.helloworld.Main.main(Main.java:16)
Caused by: java.lang.RuntimeException: Error while reading file:/F:/%e5%ad%a6%e4%b9%a0%e8%b5%84%e6%96%99/%e5%b0%9a%e7%a1%85%e8%b0%b7Java%e5%85%a8%e5%a5%97%e6%95%99%e7%a8%8b/4.%e5%b0%9a%e7%a1%85%e8%b0%b7%e5%85%a8%e5%a5%97JAVA%e6%95%99%e7%a8%8b--JavaEE%e9%98%b6%e6%ae%b5/6.%e5%b0%9a%e7%a1%85%e8%b0%b7JPA%e8%a7%86%e9%a2%91/%e8%a7%86%e9%a2%91%e6%ba%90%e7%a0%81/25/exer/out/production/jpa-1 (這段是編譯后的所在目錄)
at org.hibernate.ejb.packaging.NativeScanner.getClassesInJar(NativeScanner.java:131)
at org.hibernate.ejb.Ejb3Configuration.addScannedEntries(Ejb3Configuration.java:487)
at org.hibernate.ejb.Ejb3Configuration.addMetadataFromScan(Ejb3Configuration.java:477)
at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:363)
... 4 more
Caused by: java.io.IOException: invalid constant type: 18
at javassist.bytecode.ConstPool.readOne(ConstPool.java:1113)
at javassist.bytecode.ConstPool.read(ConstPool.java:1056)
at javassist.bytecode.ConstPool.<init>(ConstPool.java:150)
at javassist.bytecode.ClassFile.read(ClassFile.java:765)
at javassist.bytecode.ClassFile.<init>(ClassFile.java:109)
at org.hibernate.ejb.packaging.AbstractJarVisitor.checkAnnotationMatching(AbstractJarVisitor.java:246)
at org.hibernate.ejb.packaging.AbstractJarVisitor.executeJavaElementFilter(AbstractJarVisitor.java:212)
at org.hibernate.ejb.packaging.AbstractJarVisitor.addElement(AbstractJarVisitor.java:173)
at org.hibernate.ejb.packaging.ExplodedJarVisitor.getClassNamesInTree(ExplodedJarVisitor.java:126)
at org.hibernate.ejb.packaging.ExplodedJarVisitor.getClassNamesInTree(ExplodedJarVisitor.java:134)
at org.hibernate.ejb.packaging.ExplodedJarVisitor.getClassNamesInTree(ExplodedJarVisitor.java:134)
at org.hibernate.ejb.packaging.ExplodedJarVisitor.getClassNamesInTree(ExplodedJarVisitor.java:134)
at org.hibernate.ejb.packaging.ExplodedJarVisitor.getClassNamesInTree(ExplodedJarVisitor.java:134)
at org.hibernate.ejb.packaging.ExplodedJarVisitor.doProcessElements(ExplodedJarVisitor.java:92)
at org.hibernate.ejb.packaging.AbstractJarVisitor.getMatchingEntries(AbstractJarVisitor.java:149)
at org.hibernate.ejb.packaging.NativeScanner.getClassesInJar(NativeScanner.java:128)
... 7 more
main方法一運行,第一句EntityManagerFactory entityManagerFactory =
Persistence.createEntityManagerFactory(persistenceUnitName); 就報錯了,我想應該是在創建工廠時有問題,但是查看了組態檔也沒有什么問題,代碼也檢查了一遍,和講師的代碼一致,所以想請教一下大佬幫助我解決這個問題!
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/112030.html
標籤:Java相關
上一篇:匯出帶圖的exlcel出錯
