(debian,eclipse 3.4)QuerySyntaxException: customer is not mapped
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 :
Citation:
javax.ejb.EJBException: java.lang.IllegalArgumentException: Unknown entity: source.customer.Customer
.
voici le code de la classe de l'EJB :
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 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;
}
(...) |
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"...
mais rien à faire, à la compilation ça bloque.
voici le code de la classe JPA :
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 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.