2015-04-23 7 views
1

Я пытаюсь запустить образец проекта на основе JPA. Я получаю ошибку из названия все время.Отсутствует поставщик сущности для EntityManager named (Hibernate)

Я смотрел здесь: No Persistence provider for EntityManager named

но не нашел рабочего раствора там.

Вот мой 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>~path.example</groupId> 
    <artifactId>example</artifactId> 
    <version>1.0-SNAPSHOT</version> 
    <dependencies> 

     <dependency> 
      <groupId>mysql</groupId> 
      <artifactId>mysql-connector-java</artifactId> 
      <version>5.1.6</version> 
     </dependency> 
     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>ejb3-persistence</artifactId> 
      <version>3.3.2.Beta1</version> 
     </dependency> 
     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-entitymanager</artifactId> 
      <version>4.3.9.Final</version> 
     </dependency> 
     <dependency> 
      <groupId>org.eclipse.jst.server.generic</groupId> 
      <artifactId>oc4j</artifactId> 
      <version>1.5.105-v200709061325</version> 
     </dependency> 

     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-core</artifactId> 
      <version>4.0.1.Final</version> 
     </dependency> 
     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-validator</artifactId> 
      <version>4.2.0.Final</version> 
     </dependency> 
     <dependency> 
      <groupId>org.hibernate.common</groupId> 
      <artifactId>hibernate-commons-annotations</artifactId> 
      <version>4.0.1.Final</version> 
      <classifier>tests</classifier> 
     </dependency> 
     <dependency> 
      <groupId>org.hibernate.javax.persistence</groupId> 
      <artifactId>hibernate-jpa-2.0-api</artifactId> 
      <version>1.0.1.Final</version> 
     </dependency> 
     <dependency> 
      <groupId>javax.validation</groupId> 
      <artifactId>validation-api</artifactId> 
      <version>1.0.0.GA</version> 
      <scope>provided</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.slf4j</groupId> 
      <artifactId>slf4j-api</artifactId> 
      <version>1.6.4</version> 
     </dependency> 
     <dependency> 
      <groupId>org.jboss.logging</groupId> 
      <artifactId>jboss-logging</artifactId> 
      <version>3.1.0.CR2</version> 
     </dependency> 
     <dependency> 
      <groupId>org.slf4j</groupId> 
      <artifactId>slf4j-log4j12</artifactId> 
      <version>1.6.4</version> 
     </dependency> 
     <dependency> 
      <groupId>org.jboss.spec</groupId> 
      <artifactId>jboss-javaee-6.0</artifactId> 
      <version>1.0.0.Final</version> 
      <type>provided</type> 
      <scope>pom</scope> 
     </dependency> 
     <dependency> 
      <groupId>junit</groupId> 
      <artifactId>junit</artifactId> 
      <version>4.11</version> 
      <scope>test</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.jboss.arquillian.junit</groupId> 
      <artifactId>arquillian-junit-container</artifactId> 
      <scope>test</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.jboss.spec</groupId> 
      <artifactId>jboss-javaee-6.0</artifactId> 
      <version>1.0.0.Final</version> 
      <type>pom</type> 
      <scope>provided</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.jboss.arquillian.container</groupId> 
      <artifactId>arquillian-weld-ee-embedded-1.1</artifactId> 
      <version>1.0.0.CR3</version> 
      <scope>test</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.jboss.weld</groupId> 
      <artifactId>weld-core</artifactId> 
      <version>1.1.5.Final</version> 
      <scope>test</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.slf4j</groupId> 
      <artifactId>slf4j-simple</artifactId> 
      <version>1.6.4</version> 
      <scope>test</scope> 
     </dependency> 
    </dependencies> 
    <dependencyManagement> 
     <dependencies> 
      <dependency> 
       <groupId>org.jboss.arquillian</groupId> 
       <artifactId>arquillian-bom</artifactId> 
       <version>1.1.8.Final</version> 
       <scope>import</scope> 
       <type>pom</type> 
      </dependency> 
     </dependencies> 
    </dependencyManagement> 

</project> 

Вполне возможно, что у меня есть некоторая зависимость, которые мне не нужно. Поскольку я неопытен, я должен честно признаться, я был довольно отчаянным и искал любой возможный ответ, и во время этого процесса я добавил некоторые зависимости, которые могут вообще не использоваться.

Вот класс должен сделать EntityManager

package ~path.examples.service; 

import ~path.examples.testjpa.domain.Person; 

import javax.persistence.*; 

/** 
* Created by ME on 2015-04-22. 
*/ 
public class JpaTest { 
    public static void main(String args[]) { 
     EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("jpaTest"); 
     EntityManager em = entityManagerFactory.createEntityManager(); 
     EntityTransaction userTransaction = em.getTransaction(); 

     userTransaction.begin(); 
     Person person = new Person(); 
     person.setFirstName("Charles"); 
     person.setSurname("Dickens"); 
     em.persist(person); 
     userTransaction.commit(); 
     em.close(); 
     entityManagerFactory.close(); 
    } 
} 

Также:

  1. Im вполне уверен, что все файлы находятся в соответствующих местах, я также имел некоторые проблемы со мной, но я, кажется, устранил эту проблему (другие ошибки выскакивают, чем раньше) :)

  2. Возможно, что-то очевидное, что мне не хватает, спасибо заранее f или любую помощь!

Редактировать: Очень вероятно, что проблема заключается в файле persistance.xml, так что вот оно (спасибо за указание). Расположение файла SRC/основные/ресурсы/META-INF

<?xml version="1.0" encoding="UTF-8"?> 
<persistence version="2.0" 
      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"> 
    <persistence-unit name="JpaTest" transaction-type="RESOURCE_LOCAL"> 
     <provider>org.hibernate.ejb.HibernatePersistence</provider> 
     <class>~path.examples.testjpa.domain.Person</class> 
     <properties> 
      <property name="hibernate.show_sql" value="true" /> 
      <property name="hibernate.format_sql" value="true" /> 
      <property name="hibernate.dialect" value="org.hibernate.dialect.DerbyDialect" /> 
      <property name="hibernate.hbm2ddl.auto" value="update" /> 
     </properties> 

    </persistence-unit> 
</persistence> 
+1

У вас есть файл persistence.xml? – Vyncent

+0

И если да: ГДЕ это? «я уверен», это не повод скрывать детали, поскольку выбор, который вы допустили, по-прежнему очень много. Вы так говорите. – Gimby

+0

Да, конечно, у меня есть это, и я намеревался опубликовать его. Отредактировано, спасибо за указание, просто забыл :) Кстати, место правильное почти наверняка (я должен признать, что я немного экспериментировал, и в любом другом месте его даже не обнаруживали), но очень вероятно, что внутри файла есть ошибка, которую я не вижу. –

ответ

0

Вам нужно изменить:

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

к:

<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider> 
+1

Мне жаль это говорить, но, видимо, вы ошибаетесь. Я просто устранил ошибку, изменив <живучесть-единица имя = "JpaTest" транзакция типа = "RESOURCE_LOCAL"> к <живучести-единица имя = "jpaTest" транзакция тип = "RESOURCE_LOCAL"> ((очевидно, простой орфографическая ошибка)) , которая устранила предыдущую ошибку, но сделал новую ошибку «Приложение должно предоставить соединения JDBC» в строке UserTransaction.начать(); Когда я попытался сделать то, что вы сказали, мне потребовался шаг назад к предыдущей ошибке :) спасибо за попытку, теперь я буду благодарен за помощь в новой –

+0

Не правда ли? [Как об этом] (http://stackoverflow.com/questions/22691252/error-deprecated-persistenceprovider-use-hibernatepersistenceprovider-instead)? –

+0

Я далек от попыток обесценить вашу помощь, так как это очень приветствуется, и, очевидно, вы знаете гораздо больше о теме, чем я. Я просто говорю, что происходит. Выполнение того, что вы предложили, делает мне шаг назад, к ошибке, которую я просто устранил, исправляя орфографическую ошибку. –

1

Может быть, вы не добавили в спящий режим jars к пути класса проекта? Отсутствующие банки-поставщики (в данном случае Hibernate) не будут отображать ошибки компиляции, поскольку они требуются во время выполнения.

+1

Я использую maven, и я добавил зависимости. Сейчас я только что подтвердил, что все банки на своем месте. –

Смежные вопросы