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:
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:
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:
1 2 3 4 5 6 7
|
@Remote
public interface PersonRemote {
Person createPerson(Person person);
} |
Le persistence.xml
Code:
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 :
Citation:
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 :
Citation:
----------------------------------
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