1

vaadin を使用して、hibernate 4.3.1 を実行するアプリケーションの UI を開発しています しかし、EntityManager を作成しようとすると、次のエラーがスローされます

java.lang.ClassCastException: org.hibernate.ejb.HibernatePersistence cannot be cast to javax.persistence.spi.PersistenceProvider
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:54)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:39)
at com.vaadin.addon.jpacontainer.JPAContainerFactory.createEntityManagerForPersistenceUnit(JPAContainerFactory.java:122)
at com.vaadin.addon.jpacontainer.JPAContainerFactory.make(JPAContainerFactory.java:105)

hibernate-jpa-2.1-api-1.0.0.Final.jarpersistence-api-1.0.2.jarを使用して EnityManager をインポートしましたが、同じエラーが発生し続けます

これがEntityManagerを作成するクラスです

 public class workManager{
    public static void create() {
    DataAccess dao= new DataAccess();

    EntityManager em = Persistence  //error here
            .createEntityManagerFactory("myUI")
            .createEntityManager();

    em.getTransaction().begin();
    dao.init();
    List<work> list = dao.findAll(); //get all rows in table
    em.persist(list);
    dao.close();
    em.getTransaction().commit();
}

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="myProject">
    <!-- Specify the JPA provider to use -->
    <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>

    <!-- Entity beans go here -->
    <class>com.dao.model.Work</class>


    <properties>
        <!-- DB connection properties -->
        <property name="javax.persistence.jdbc.url" value="jdbc:sqlserver://S12345:1111;databaseName=dbName" />
        <!-- property name="javax.persistence.jdbc.url" value="jdbc:sqlserver://L71111:1111;databaseName=dbName" / -->
        <property name="javax.persistence.jdbc.user" value="iaSys" />
        <property name="javax.persistence.jdbc.password" value="password" />
        <property name="javax.persistence.jdbc.driver" value="com.microsoft.sqlserver.jdbc.SQLServerDriver" />

        <!-- Settings for c3p0 connection pooling -->
        <property name="hibernate.connection.provider_class" value="org.hibernate.connection.C3P0ConnectionProvider" />
        <property name="hibernate.c3p0.max_size" value="100" />
        <property name="hibernate.c3p0.min_size" value="0" />
        <property name="hibernate.c3p0.acquire_increment" value="1" />
        <property name="hibernate.c3p0.idle_test_period" value="300" />
        <property name="hibernate.c3p0.max_statements" value="0" />
        <property name="hibernate.c3p0.timeout" value="100" />
    </properties>
</persistence-unit>

別のクラスで JPAContainer を作成します

 private JPAContainer<work> container = JPAContainerFactory.make(work.class,
            JpaProjectUI.PERSISTENCE_UNIT);
 grid.setContainerDataSource(container);

そして、ここで私のEntityManagerが呼び出されます

public class JpaPojectUI extends UI {
private static final long serialVersionUID = 1L;
public static final String PERSISTENCE_UNIT = "myProject";

static {
    workManager.create();
}

@Override
protected void init(VaadinRequest request) {
    setContent(new mainUI());
}

JPAContainerアドオンに付属のAddressBookデモに従っていました

Tomcat 8 を使用してアプリケーションを実行しています

なぜこれが起こっているのか誰にも分かりますか?問題が明確でない場合は、お気軽にお問い合わせください。

これが私のWEB-INFフォルダーのjarファイルです

ここに画像の説明を入力

また、次のjarのリストを持つ別のプロジェクトをビルドパスに追加しました

ここに画像の説明を入力

ありがとう

4

1 に答える 1