Java entitymanager错误JPA/hibernate没有持久性提供程序

Java entitymanager错误JPA/hibernate没有持久性提供程序,java,mysql,hibernate,jpa,Java,Mysql,Hibernate,Jpa,我想使用JPA/hibernate添加数据库和持久化数据。我将persistence.xml放在了正确的位置,但没有针对entitymanager错误的持久性提供程序。数据库在mysql中。任何建议都将不胜感激。这是我的密码: 文件夹结构: servlet: JPA持久性的服务类: persistence.xml: 错误: 更新 我添加lib文件夹是为了显示我为项目添加的jar文件,因为我没有使用maven 更新2 我最终使用了maven,它现在可以工作了。有关pom.xml,请参见下面@Sur

我想使用JPA/hibernate添加数据库和持久化数据。我将persistence.xml放在了正确的位置,但没有针对entitymanager错误的持久性提供程序。数据库在mysql中。任何建议都将不胜感激。这是我的密码:

文件夹结构:

servlet:

JPA持久性的服务类:

persistence.xml:

错误:

更新

我添加lib文件夹是为了显示我为项目添加的jar文件,因为我没有使用maven

更新2


我最终使用了maven,它现在可以工作了。有关pom.xml,请参见下面@Surace的答案。

将persistence.xml更改为

<persistence version="2.1"
xmlns="http://xmlns.jcp.org/xml/ns/persistence" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
<persistence-unit name="ReservationsPU">
    <provider>org.hibernate.ejb.HibernatePersistence</provider>
    <properties>
        <property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/world" />
        <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver" />
        <property name="hibernate.connection.username" value="root" />
        <property name="hibernate.connection.password" value="password" />
        <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect" />
        <property name="hibernate.hbm2ddl.auto" value="create" />
        <property name="hibernate.show_sql" value="true" />
        <property name="use_sql_comments" value="true" />
        <property name="hibernate.format_sql" value="true" />
    </properties>
</persistence-unit>

如果使用Maven,请在pom.xml中添加以下依赖项

<dependencies>

    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-entitymanager</artifactId>
        <version>5.1.0.Final</version>
    </dependency>
    <dependency>
        <groupId>org.hibernate.javax.persistence</groupId>
        <artifactId>hibernate-jpa-2.1-api</artifactId>
        <version>1.0.0.Final</version>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.37</version>
    </dependency>

</dependencies>

我认为问题在于日食。Eclipse可能只允许运行显式设置为JPA项目的JPA


通过在资源管理器中打开上下文菜单,您可以将项目转换为JPA项目。

顺便说一句,您的实体应该有一个id。@MouseEvent,我有一个id。我更新了question@ScaryWombat,根据JPA文档,我只需要在配置持久性单元的地方添加persistence.xml。我没有;我看不到关于web.xml的任何信息。你是说我也必须在web.xml中添加配置吗?@JoeZ我自己也不确定,因此根据你更新的问题,Eclipse中的构建错误是什么?我想使用JPA 2.1版本,这就是我使用此提供程序的原因。但我也试过你的,同样的错误。出于某种原因,它没有得到persistence.xml配置。根据Jpa文档,我遵循了所有的步骤。您还应该在pom.xml中添加依赖项。可能我错过了,但我看不到OP提到他正在使用Maven。我认为最好提到hibernate-entitymanager.jar应该在classpath中,如果他使用Maven,则使用pom.xml作为示例。我认为很可能OP没有使用Maven,基于他显示的目录结构yes@AdrianShum你是对的,他没有使用Maven。乔兹,你试过上面的答案吗?您的库文件夹中有jar吗?
public class ReservationSevice 
{
    static EntityManagerFactory emf = Persistence.createEntityManagerFactory("ReservationsPU");
    private static EntityManager em = emf.createEntityManager(); 

    public void createReservation (ReservationEntity reservation)
    {
        em.getTransaction().begin();
        em.persist(reservation);
        em.getTransaction().commit();
    }
}
<persistence version="2.1"
    xmlns="http://xmlns.jcp.org/xml/ns/persistence" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
    <persistence-unit name="ReservationsPU">
        <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
        <properties>
            <property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/world" />
            <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver" />
            <property name="hibernate.connection.username" value="root" />
            <property name="hibernate.connection.password" value="password" />
            <property name="hibernate.archive.autodetection" value="class" />
            <property name="hibernate.show_sql" value="true" />
            <property name="hibernate.format_sql" value="true" />
            <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect" />
            <property name="hbm2ddl.auto" value="update" />
        </properties>
    </persistence-unit>
</persistence>
javax.persistence.PersistenceException: No Persistence provider for EntityManager named ReservationsPU
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:61)
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:39)
    at com.welcomelimo.service.ReservationSevice.<init>(ReservationSevice.java:11)
    at com.welcomelimo.controller.Reservations.doPost(Reservations.java:56)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:648)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:528)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1099)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:670)
    at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpoint.java:2508)
    at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:2497)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Thread.java:745)
Exception occured
<persistence version="2.1"
xmlns="http://xmlns.jcp.org/xml/ns/persistence" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
<persistence-unit name="ReservationsPU">
    <provider>org.hibernate.ejb.HibernatePersistence</provider>
    <properties>
        <property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/world" />
        <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver" />
        <property name="hibernate.connection.username" value="root" />
        <property name="hibernate.connection.password" value="password" />
        <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect" />
        <property name="hibernate.hbm2ddl.auto" value="create" />
        <property name="hibernate.show_sql" value="true" />
        <property name="use_sql_comments" value="true" />
        <property name="hibernate.format_sql" value="true" />
    </properties>
</persistence-unit>
<dependencies>

    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-entitymanager</artifactId>
        <version>5.1.0.Final</version>
    </dependency>
    <dependency>
        <groupId>org.hibernate.javax.persistence</groupId>
        <artifactId>hibernate-jpa-2.1-api</artifactId>
        <version>1.0.0.Final</version>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.37</version>
    </dependency>

</dependencies>