bonjour,
j'ai créé un projet eclipse EAR (enterprise application project), auquel j'ai ajouté 3 projets: un JPA (avec des entities), un EJB (avec des EJB) et une clase cliente dans un projet java.
le problème c'est que le projet EJB ne semble pas reconnaître les entities; à la compilation eclipse ne dit rien (tout semble bon) mais à l'exécution j'ai l'erreur suivante :.javax.ejb.EJBException: java.lang.IllegalArgumentException: Unknown entity: source.customer.Customer
voici le code de la classe de l'EJB :j'ai ajouté des références au projet EJB autant que j'ai pu (dans "properties"/"java build path"/"project", "properties"/"java EE module dependencies"...
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61 package ejb.customer; import java.util.List; import javax.ejb.Stateless; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; import javax.persistence.Query; import source.Address; import source.customer.Customer; import source.exception.ValidationException; import ejb.customer.CustomerLocal; @Stateless //(name="CustomerSB",mappedName="ejb/stateless/Customer") public class CustomerBean implements CustomerLocal, CustomerRemote { @PersistenceContext(unitName="petstorePU") private EntityManager em; public Customer authenticate(String login, String password) { if (login==null || login.equals("")) throw new ValidationException("Invalid login"); Query query; Customer customer; query=em.createQuery("select c from Customer c where c.login=:login"); query.setParameter("login", login); customer=(Customer) query.getSingleResult(); if (customer!=null) customer.matchPassword(password); return customer; } public Customer createCustomer(Customer customer, Address homeAddress) { if (customer==null) throw new ValidationException("customer object is null"); customer.setHomeAddress(homeAddress); em.persist(customer); return customer; } public Customer findCustomer(Long customerId) { if (customerId==null) throw new ValidationException("invalid id"); Customer customer; customer=em.find(Customer.class, customerId); return customer; } (...)
mais rien à faire, à la compilation ça bloque.
voici le code de la classe JPA :
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
47
48
49
50
51
52 package source.customer; import java.io.Serializable; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.FetchType; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.OneToOne; import javax.persistence.PostLoad; import javax.persistence.PostPersist; import javax.persistence.PostUpdate; import javax.persistence.PrePersist; import javax.persistence.PreUpdate; import javax.persistence.Table; import javax.persistence.Temporal; import javax.persistence.TemporalType; import javax.persistence.Transient; import source.Address; import source.exception.ValidationException; //{|} @Entity @Table(name="t_customer") public class Customer implements Serializable{ @Id @GeneratedValue(strategy=GenerationType.AUTO) private Long id; @Column(unique=true,nullable=false,length=8) private String login; @Column(nullable=false,length=8) private String password; @Column(nullable=false,length=30) private String firstname; @Column(nullable=false,length=30) private String lastname; private String telephone; private String email;
avez-vous une idée?
olivier.
Partager