1. ホーム
  2. java

[解決済み] という名前の EntityManager 用の Persistence プロバイダがありません。

2022-02-02 12:33:03

質問

私の persistence.xml を使い、同じ名前で TopLink の下に META-INF ディレクトリを作成します。 そして、私のコードにそれを呼び出させています。

EntityManagerFactory emfdb = Persistence.createEntityManagerFactory("agisdb");

それなのに、次のようなエラーメッセージが表示されました。

2009-07-21 09:22:41,018 [main] ERROR - agisdb という EntityManager 用の Persistence プロバイダがありません。
javax.persistence.PersistenceException: agisdb という名前の EntityManager 用の Persistence プロバイダがありません。
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:89)
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:60)

以下は persistence.xml :

<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="1.0">
    <persistence-unit name="agisdb">
        <class>com.agis.livedb.domain.AddressEntity</class>
        <class>com.agis.livedb.domain.TrafficCameraEntity</class>
        <class>com.agis.livedb.domain.TrafficPhotoEntity</class>
        <class>com.agis.livedb.domain.TrafficReportEntity</class>
        <properties>
            <property name="toplink.jdbc.url" value="jdbc:mysql://localhost:3306/agisdb"/>
            <property name="toplink.jdbc.driver" value="com.mysql.jdbc.Driver"/>
            <property name="toplink.jdbc.user" value="root"/>
            <property name="toplink.jdbc.password" value="password"/>
        </properties>
    </persistence-unit>
</persistence>

クラスパスに入っているはずです。それなのに、上記のようなエラーが発生しました。

どうすればいいですか?

その後 <persistence-unit name="agisdb"> で、永続化プロバイダ名を定義します。

<provider>org.hibernate.ejb.HibernatePersistence</provider>