2012-05-30 5 views
3

моего файла src/main/resources/META-INF/persistence.xml есть:Нет поставщиков сохраняемости, доступные для

<?xml version="1.0" encoding="UTF-8" ?> 
<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" xmlns="http://java.sun.com/xml/ns/persistence"> 
    <persistence-unit name="todo" transaction-type="RESOURCE_LOCAL"> 
     <class>com.testJPA.classes.Voiture</class> 
     <properties> 

      <property name="javax.persistence.jdbc.driver" value="org.hsqldb.jdbcDriver" /> 
      <property name="javax.persistence.jdbc.url" value="jdbc:hsqldb:mem:todos" /> 
      <property name="javax.persistence.jdbc.user" value="sa" /> 
      <property name="javax.persistence.jdbc.password" value="" /> 

      <property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema(ForeignKeys=true)"/> 
      <property name="openjpa.RuntimeUnenhancedClasses" value="supported"/> 
     </properties> 

    </persistence-unit> 

мой основной класс:

package com.testJPA.classes; 

import javax.persistence.EntityManager; 
import javax.persistence.EntityManagerFactory; 
import javax.persistence.Persistence; 
import javax.persistence.Query; 

public class Main { 

    /** 
    * @param args 
    */ 
    public static void main(String[] args) { 
     // TODO Auto-generated method stub 

     System.out.print("Hello"); 
     EntityManagerFactory emf = Persistence 
       .createEntityManagerFactory("todo"); 
     EntityManager em = emf.createEntityManager(); 

     for (int i = 0; i < 10; i++) { 
      Voiture car = new Voiture("a", "b", "c"); 
      em.persist(car); 

     } 

     em.getTransaction().commit(); 

     // Find the number of Point objects in the database: 
     Query q1 = em.createQuery("SELECT COUNT(v) FROM Voiture v"); 
     System.out.println("Le nombre d'enregistrement: " 
       + q1.getSingleResult()); 

    } 

} 

и мой Clase "Voiture" является:

package com.testJPA.classes; 

import javax.persistence.Entity; 
import javax.persistence.Id; 



@Entity 
public class Voiture { 


@Id private String matricule; 
    String position; 
    String vitesse; 

    public Voiture(String matricule, String position, String vitesse) { 
     this.matricule = matricule; 
     this.position = position; 
     this.vitesse = vitesse; 


    } 

    public Voiture() { 
     this.matricule = ""; 
     this.position = ""; 
     this.vitesse = ""; 

    } 

    public String getMatricule() { 
     return matricule; 
    } 

    public void setMatricule(String matricule) { 
     this.matricule = matricule; 
    } 

    public String getPosition() { 
     return position; 
    } 

    public void setPosition(String position) { 
     this.position = position; 
    } 

    public String getVitesse() { 
     return vitesse; 
    } 

    public void setVitesse(String vitesse) { 
     this.vitesse = vitesse; 
    } 

} 

У меня есть эта ошибка: Нет поставщики сохраняемости, доступные для «TODO» после попытки следующих открытых реализаций

я сожалею begineer в Java EE

+0

Может быть полезно, если вы разместите весь стек. – Rick

ответ

0

Если JPA используется автономно, вы должны указать <provider> в persistence.xml по реализации JPA, который вы использовали

Для OpenJPA, это org.apache.openjpa.persistence.PersistenceProviderImpl:

<persistence-unit name="todo" transaction-type="RESOURCE_LOCAL"> 
     <class>com.testJPA.classes.Voiture</class> 
     <provider>org.apache.openjpa.persistence.PersistenceProviderImpl/provider> 
     ....................................................... 
    </persistence-unit> 
+0

Я добавляю его, но всегда ту же ошибку, извините – user1528481

2

Это вопрос CLASSPATH. Вы должны иметь каталог META-INF в корневой директории скомпилированных классов.

target/classes/
    /com/testJPA/classes/Main.class 
    /META-INF/persistence.xml 

После устранения этой проблемы, вы должны избавиться от имущества openjpa.RuntimeUnenhancedClasses. Это злая собственность, которая не вызовет у вас никаких головных болей. Пожалуйста, прочитайте this documentation и this documentation о том, как правильно улучшить свои сущности.

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