先生のドキュメントで提供されている情報に従って、簡単なjpa 2.0プロジェクトをセットアップしようとしています。私は何時間もこれを行ってきましたが、私が何をしても、私はEntityManagerFactoryを作成しようとするとこの例外を常に得ます: 私はこの例外に関する多くの同様の質問を見つけましたが、働くために。私はここで間違って何をしていますか? javax.persistence.PersistenceException:EntityManagerの永続プロバイダがありません
は、私は、Eclipse(なしコマンドプロンプト)Exception in thread "main" javax.persistence.PersistenceException: No Persistence provider for EntityManager named course
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:56)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:34)
at message.SaveMessage.main(SaveMessage.java:8)
ディレクトリ構造
私の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="course" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect" />
<property name="hibernate.hbm2ddl.auto" value="update" />
<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" />
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/StudentDB" />
<property name="javax.persistence.jdbc.user" value="root" />
<property name="javax.persistence.jdbc.password" value="pasapas2005" />
</properties>
</persistence-unit>
</persistence>
私のクラス
package message;
import java.io.Serializable;
import javax.persistence.*;
@Entity
public class Message implements Serializable {
private long id;
private String text;
public Message() {
}
public Message(long id, String text) {
this.setId(id);
this.setText(text);
}
@Id
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
}
私の私のテスター私はクラスorg.hibernate.ejb.Hibernat ePersistenceがクラスパスから欠落していると思います(メイン)クラス
package message;
import javax.persistence.*;
public class SaveMessage {
public static void main(String[] args) {
EntityManagerFactory emf = Persistence.createEntityManagerFactory("course");
EntityManager em = emf.createEntityManager();
EntityTransaction tx = em.getTransaction();
tx.begin();
Message message = new Message(1, "Hello world");
em.persist(message);
tx.commit();
em.close();
System.out.println("message saved");
}
}
org.hibernate.ejb.Hibernat ePersistenceクラスがクラスパス上にあることを確認してください。 – JamesB
返信いただきありがとうございます。私の質問は馬鹿に聞こえるかもしれませんが、私のクラスパスをどうやってチェックするのですか? –
eclipseでは、プロジェクトを開いた状態でCtrl + Shift + Tを押してクラス名を入力します。リストに表示されない場合は、クラスパス上にないことがわかります。 – JamesB