簡體   English   中英

沒有命名為EntityManager的持久性提供程序-我做錯了什么?

[英]No Persistence provider for EntityManager named - I am doing something wrong?

我在META-INF目錄下使用toplink使用了同名的persistence.xml。 然后我有我的代碼用...

public class DBConnect {
    @PersistenceUnit
    EntityManagerFactory emf;

    public DBConnect()
    {
        emf = null;
    }
    public void startConnection()
    {
        emf = Persistence.createEntityManagerFactory
                (
                    "cvut.fel.pjv.persistence.xml"
                );
    }
    public void closeConnection()
    {
        emf.close();
    }
    public EntityManagerFactory getEMF()
    {
        return emf;
    }
}

我收到以下錯誤消息:

Exception in thread "main" javax.persistence.PersistenceException: No Persistence provider for EntityManager named cvut.fel.pjv.persistence.xml
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:85)
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:54)
    at utils.DBConnect.startConnection(DBConnect.java:30)
    at utils.Server.<init>(Server.java:32)
    at utils.Server.main(Server.java:58)

這是我的persistence.xml-我認為應該是正確的

<?xml version="1.0" encoding="UTF-8"?>
<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="cvut.fel.pjv_LibrarySystem_server_jar_1.0-SNAPSHOTPU" transaction-type="RESOURCE_LOCAL">
    <provider>org.hibernate.ejb.HibernatePersistence</provider>
    <class>model.Vydani</class>
    <class>model.Nosic</class>
    <class>model.Vypujcka</class>
    <class>model.Adresa</class>
    <class>model.Casopis</class>
    <class>model.Kategorie</class>
    <class>model.Kniha</class>
    <class>model.Nakladatelstvi</class>
    <class>model.Zamestnanec</class>
    <class>model.Ctenar</class>
    <class>model.Vytisk</class>
    <class>model.Autor</class>
    <class>model.SpisovatelePocetDel</class>
    <class>model.UzivateleAdresy</class>
    <class>model.Osoba</class>
    <class>model.DigitalniNosic</class>
    <properties>
      <property name="javax.persistence.jdbc.url" value="jdbc:postgresql://slon.felk.cvut.cz:5432/db18_koresmi1"/>
      <property name="javax.persistence.jdbc.user" value="db18_koresmi1"/>
      <property name="javax.persistence.jdbc.driver" value="org.postgresql.Driver"/>
      <property name="javax.persistence.jdbc.password" value="Hk2JsA"/>
    </properties>
  </persistence-unit>
</persistence>

還有一個pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<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>cvut.fel.pjv</groupId>
    <artifactId>LibrarySystem_server</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>jar</packaging>
    <dependencies>
        <dependency>
            <groupId>org.eclipse.persistence</groupId>
            <artifactId>eclipselink</artifactId>
            <version>2.5.2</version>
        </dependency>
        <dependency>
            <groupId>org.eclipse.persistence</groupId>
            <artifactId>org.eclipse.persistence.jpa.modelgen.processor</artifactId>
            <version>2.5.2</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>com.googlecode.json-simple</groupId>
            <artifactId>json-simple</artifactId>
            <version>1.1.1</version>
            <type>jar</type>
        </dependency>
        <dependency>
            <groupId>org.postgresql</groupId>
            <artifactId>postgresql</artifactId>
            <version>9.4.1212</version>
        </dependency>
    </dependencies>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
    </properties>
</project>

非常感謝您的幫助-我在netbeans中作為Maven項目來做

Persistence.createEntityManagerFactory的參數是Persistence.createEntityManagerFactory性單元的名稱。 根據您的persistence.xml您的持久性單元名為cvut.fel.pjv_LibrarySystem_server_jar_1.0-SNAPSHOTPU 下面的代碼應該工作:

emf = Persistence.createEntityManagerFactory("cvut.fel.pjv_LibrarySystem_server_jar_1.0-SNAPSHOTPU");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM