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
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
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 ... }
L'interface PersonRemote
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; } }
Le persistence.xml
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); }
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 :
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>
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 :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)
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.----------------------------------
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
----------------------------------
Merci
Partager