Tôi đang cố gắng thiết lập một dự án jpa 2.0 đơn giản bằng cách làm theo thông tin trong Hibernate EntityManager documentation. Tôi đã về điều này trong nhiều giờ bây giờ, nhưng không có vấn đề gì tôi làm tôi luôn luôn được ngoại lệ này khi tôi cố gắng để tạo ra một EntityManagerFactory:JPA 2.0 sử dụng Hibernate làm nhà cung cấp - Ngoại lệ: Không có nhà cung cấp Persistence cho EntityManager
Exception in thread "main" javax.persistence.PersistenceException: No Persistence provider for EntityManager named manager1
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:54)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:32)
at se.mycomp.UserTest.main(UserTest.java:9)
Tôi đã tìm thấy một vài câu hỏi tương tự liên quan đến ngoại lệ này, nhưng không có giải pháp nào tôi có thể làm việc. Tôi làm gì sai ở đây?
cấu trúc thư mục
.
├── pom.xml
└── src
├── main
│ ├── java
│ │ └── se
│ │ └── mycomp
│ │ ├── UserTest.java
│ │ └── domain
│ │ └── User.java
│ └── resources
│ ├── META-INF
│ │ └── persistence.xml
│ └── log4j.properties
└── test
└── java
tôi persistence.xml
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
version="2.0">
<persistence-unit name="manager1" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<class>se.mycomp.domain.User</class>
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect"/>
<property name="hibernate.hbm2ddl.auto" value="create-drop"/>
<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost/test"/>
<property name="javax.persistence.jdbc.user" value="test"/>
<property name="javax.persistence.jdbc.password" value="1234"/>
</properties>
</persistence-unit>
</persistence>
tôi pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>se.lil.tryjpa</groupId>
<artifactId>try-jpa</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<hibernate-core.version>3.6.4.Final</hibernate-core.version>
<mysql-connector-java.version>5.1.16</mysql-connector-java.version>
<slf4j.version>1.6.1</slf4j.version>
<log4j.version>1.6.1</log4j.version>
</properties>
<dependencies>
<!-- HIBERNATE DEPENDENCIES -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>${hibernate-core.version}</version>
</dependency>
<!-- MYSQL DEPENDENCIES -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql-connector-java.version}</version>
</dependency>
<!-- Logging Dependencies -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>${log4j.version}</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
<optimize>true</optimize>
<debug>true</debug>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-eclipse-plugin</artifactId>
<version>2.8</version>
<configuration>
<downloadSources>true</downloadSources>
</configuration>
</plugin>
</plugins>
</build>
UserTest.java
public class UserTest {
public static void main(String[] args) {
EntityManagerFactory emf = Persistence.createEntityManagerFactory("manager1");
EntityManager em = emf.createEntityManager();
}
}
Không hề xấu hổ chút nào, thông báo lỗi đó là vô dụng (áp dụng cho toàn bộ vấn đề). –
Tôi muốn thêm rằng sự phụ thuộc này sẽ thay thế phần tử 'hibernate-core', không chỉ được thêm vào bên cạnh, bởi vì nó trong thực tế đã bao gồm' hibernate-core'.Xem danh sách các phụ thuộc Maven trên Hibernate [tải trang] (http://hibernate.org/orm/downloads/). Họ rõ ràng nói rằng 'cho JPA, sử dụng hibernate-entitymanager thay vì hibernate-core'. – jFrenetic
Tôi không sử dụng maven, vì vậy hãy giải quyết vấn đề này bằng cách thêm hibernate-entity-manager.jar (được tìm thấy trong thư mục dist \ lib \ optional \ jpa trong zip hibernate 5.5.2), sau đó tải xuống và thêm jta-1.1. lọ –