Salut,
Voilà mon arborescence :
Et voilà le contenu de mon fichier PiecesFacadeLocal.java :
1 2 3 4 5 6 7 8 9 10 11
| @Local
public interface PiecesFacadeLocal {
void create(Pieces pieces);
void edit(Pieces pieces);
void remove(Pieces pieces);
Pieces find(Object id);
List<Pieces> findAll();
List<Pieces> findRange(int[] range);
int count();
} |
PiecesFacade.java :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| @Stateless
public class PiecesFacade extends AbstractFacade<Pieces> implements PiecesFacadeLocal, PiecesFacadeRemote {
@PersistenceContext(unitName = "EJB_Tri_Hors_FluxPU")
private EntityManager em;
@Override
protected EntityManager getEntityManager() {
return em;
}
public PiecesFacade() {
super(Pieces.class);
}
} |
AbstractFacade.java :
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
|
public abstract class AbstractFacade<T> {
private Class<T> entityClass;
protected abstract EntityManager getEntityManager();
public AbstractFacade(Class<T> entityClass) {
this.entityClass = entityClass;
}
public void create(T entity) {
getEntityManager().persist(entity);
}
public void edit(T entity) {
getEntityManager().merge(entity);
}
public void remove(T entity) {
getEntityManager().remove(getEntityManager().merge(entity));
}
public T find(Object id) {
return getEntityManager().find(entityClass, id);
}
public List<T> findAll() {
javax.persistence.criteria.CriteriaQuery cq = getEntityManager().getCriteriaBuilder().createQuery();
cq.select(cq.from(entityClass));
return getEntityManager().createQuery(cq).getResultList();
}
public List<T> findRange(int[] range) {
javax.persistence.criteria.CriteriaQuery cq = getEntityManager().getCriteriaBuilder().createQuery();
cq.select(cq.from(entityClass));
javax.persistence.Query q = getEntityManager().createQuery(cq);
q.setMaxResults(range[1] - range[0]);
q.setFirstResult(range[0]);
return q.getResultList();
}
public int count() {
javax.persistence.criteria.CriteriaQuery cq = getEntityManager().getCriteriaBuilder().createQuery();
javax.persistence.criteria.Root<T> rt = cq.from(entityClass);
cq.select(getEntityManager().getCriteriaBuilder().count(rt));
javax.persistence.Query q = getEntityManager().createQuery(cq);
return ((Long) q.getSingleResult()).intValue();
}
} |
Et dans mon programme de test, je déclare un objet PiecesFacadeLocal au début :
public class test2 { @EJB private static PiecesFacadeLocal pf; public static void main(String[] args) { [...] } }
Désolée de mettre autant de code mais ça pourra peut-être vous permettre de vérifier/corriger mes annotations.
Je ne suis pas encore très à l'aise avec tout ça, l'erreur vient forcément de moi.
Merci pour votre aide,
Marie
Partager