IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JPA Java Discussion :

No Persistence provider for EntityManager


Sujet :

JPA Java

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 8
    Points : 5
    Points
    5
    Par défaut No Persistence provider for EntityManager
    Bonjour à vous,

    Voila je débute avec JPA (implementation TopLink) est j'ai quelque soucis que je n'arrive pas à résoudre malgrès mes recherches sur le net.

    J'ai commencé avec une entité bateau : Person

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
     
    @Entity
    @Table(name = "PERSONNE")
    public class Person implements Serializable {
     
    	private static final long serialVersionUID = 6471621102914689766L;
     
    	@Id
    	@GeneratedValue(strategy = GenerationType.SEQUENCE)
    	@Column(name = "PERSONNE_ID", length = 8)
    	private Integer id;
     
    	@Version
    	@Column(name = "PERSONNE_VERSION", length = 4)
    	private Integer version;
     
    	@Column(name = "PERSONNE_NOM", length = 35)
    	private String lastname;
     
    	@Column(name = "PERSONNE_PRENOM", length = 30)
                 private String firstname;
     
    	@Temporal(TemporalType.DATE)
    	@Column(name = "PERSONNE_DTNAISS")
    	private Date date_of_birth;
     
    	@Transient
    	private Integer age;
     
     
    	//Constructeur
                 public Person() {}
     
    	//Constructeur POJO
    	public Person(String firstname, String lastname, Date dtBirth) {
    		setFirstname(firstname);
    		setLastname(lastname);
    		setDate_of_birth(dtBirth);
    	}
     
     
    	//Méthodes
    	...	
    	//Getters and Setters
                ...	
    }
    Mon Stateless Bean
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    @Stateless(name = "PersonSB", mappedName= "ejb/statless/Person")
    public class PersonBean implements PersonRemote {
     
    	@PersistenceContext(unitName="XP-Customer")
    	private EntityManager em;
     
    	@Override
    	public Person createPerson(Person person) {
     
    		em.persist(person);
    		return person;
    	}
     
    }
    L'interface PersonRemote
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    @Remote
    public interface PersonRemote {
     
    	Person createPerson(Person person);
     
    }
    Le persistence.xml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    <?xml version="1.0" encoding="UTF-8"?>
    <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_1_0.xsd" version="1.0">
    	<persistence-unit name="XP-Customer" transaction-type="JTA">
     
    		<provider>oracle.toplink.essentials.PersistenceProvider</provider>
    		<jta-data-source>jdbc/lmsi</jta-data-source>
     
    		<class>com.lmsi.easybms.entity.person.Person</class>
    		<class>com.lmsi.easybms.entity.customer.CustomerAccount</class>
    		<class>com.lmsi.easybms.entity.customer.Customer</class>
    		<class>com.lmsi.easybms.entity.customer.AccountType</class>
     
    	<properties>
    		<property name="toplink.ddl-generation"
                                           value="drop-and-create-tables"/>
    		<property name="toplink.create-ddl-jdbc-file-name" 
                                            value="create.sql"></property>
    		<property name="toplink.drop-ddl-jdbc-file-name" 
                                            value="drop.sql"/>
    		<property name="toplink.logging.level" value="FINEST"/>
    	</properties>
     
    	</persistence-unit>
    </persistence>
    Mon problème est le suivant, j'utilise Eclipse/Dali pour coder mes entités et quand j'essai de générer la DDL la réponse de la console est :
    Exception in thread "main" javax.persistence.PersistenceException: No Persistence provider for EntityManager named XP-Customer: No META-INF/persistence.xml was found in classpath.

    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:154)
    at org.eclipse.jpt.eclipselink.core.ddlgen.Main.execute(Main.java:77)
    at org.eclipse.jpt.eclipselink.core.ddlgen.Main.main(Main.java:65)
    J'ai essayé pas mal de truc mais rien ni fait, j'ai aussi compilé le projet puis utilisé le "Verifier" de glassfish et lui me dit :
    ----------------------------------
    NUMBER OF FAILURES/WARNINGS/ERRORS
    ----------------------------------
    # of Failures : 1
    # of Warnings : 0
    # of Errors : 0

    -----------------------------
    RESULTS FOR EJB-RELATED TESTS
    -----------------------------

    --------------
    FAILED TESTS :
    --------------

    Test Name : tests.ejb.ejb30.PUMatchingEMandEMFRefTest
    Test Assertion : For every entity manager referenced in the application, there must be a matching persistence unit defined using META-INF/persistence.xml file. Please refer to EJB 3.0 Persistence API Specification section #6.2 for further information.
    Test Description : For [ lmsi#stateless.jar#PersonSB ]
    There is no unique persistence unit found by name [ XP-Customer ] in the scope of this component.
    Persistence units that are visible to this component are [ ].


    ----------------------------------
    END OF STATIC VERIFICATION RESULTS
    ----------------------------------
    Voila si quelqu'un peut me dire ou je fait une erreur, et ce que je n'ai pas compris ca serais sympa, parceque je commence a m'arracher les cheveux.

    Merci

  2. #2
    Membre habitué Avatar de xv-mnt
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2005
    Messages : 142
    Points : 178
    Points
    178
    Par défaut
    D'après le message d'erreur, à l'exécution, le fichier META-INF/persistence.xml ne se trouve pas dans le classpath.
    Donc, il faut que tu ajoutes ce fichier dans le classpath, dans un répertoire qui s'appelle META-INF.
    Tout le monde savait que c'était impossible à faire. Puis un jour quelqu'un est arrivé qui ne le savait pas, et il le fit (Winston Churchill)

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Merci pour ta réponse mais il semblerais que ca ne soit pas ca.


    Strucuture de mon projet
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    +PROJET
       +src
           +package ...
           +META-INF
              +persistence.xml
              +orm.xml
              +MANIFEST.MF
       +toplink.essentials
       +JRE
       +...
    Ou alors je ne sais pas ajouter le répertoire au classpath, j'ai oublié de dire que je débuter aussi en JAVA

  4. #4
    Membre habitué Avatar de xv-mnt
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2005
    Messages : 142
    Points : 178
    Points
    178
    Par défaut
    Dans ta structure, ton fichier s'appelle "persitence.xml". Il manque un 's'.
    Est-ce une erreur de frappe lors de ton post ?
    Sinon, ton projet semble valide.
    Pour être sûr, peux-tu regarder dans ton JAR généré si le fichier est bien présent ?
    Tout le monde savait que c'était impossible à faire. Puis un jour quelqu'un est arrivé qui ne le savait pas, et il le fit (Winston Churchill)

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    bonjour,

    Il s'agit bien d'une erreur de frappe dans le post.

    Je vérifie le JAR, et te tien au courant, cependant cela n'explique pas l'erreur de génération de la DDL dans Eclipse, si tu as une solution ou une piste que je peux suivre je suis preneur.

    Pour info j'utilise mon script ANT pour compiler, packager, vérifier et déployer l'application.

    Encore merci.

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Salut,

    Apres verification de tout les jar et meme du ear, aucun fichier persistence.xml n'est présent.

    J'ai pourtant suivi l'exemple du très bon bouquin d'Antonio Goncalves (JAVA EE5) pour le build.xml.

    Un conseil, une piste ou une solution sont le bien venu.

    Merci

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Bonsoir,

    Ayé en cherchant un peu dans mon build.xml,j'ai trouvé l'erreur, enfaite je copié le persistence.xml directement à la racine du jar et non dans le META-INF du meme jar.

    Merci à xv-mnt pour son aide precieuse qui ma mis sur la piste

    Tchô

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 24/05/2011, 10h27
  2. No Persistence provider for EntityManager
    Par hynposat7 dans le forum JPA
    Réponses: 2
    Dernier message: 24/08/2009, 18h35
  3. Réponses: 4
    Dernier message: 12/04/2009, 19h53
  4. Réponses: 1
    Dernier message: 09/04/2009, 21h42
  5. [Toplink] No Persistence provider for EntityManager
    Par seb974 dans le forum Persistance des données
    Réponses: 1
    Dernier message: 21/03/2009, 20h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo