package com.megatim.fdxconsultation.dao.impl.referentiel; import com.megatim.fdxcommons.model.referentiel.Routage; import com.megatim.fdxcommons.model.referentiel.RoutageId; import com.megatim.fdxconsultation.dao.ifaces.referentiel.RoutageDAO; import javax.ejb.Stateless; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; import javax.persistence.Query; /** * * @author ASUS */ @Stateless public class RoutageDAOImpl implements RoutageDAO { @PersistenceContext(unitName = "fdxConsultationPersistenceUnit") protected EntityManager em; public RoutageDAOImpl() { } @Override public EntityManager getEntityManager() { return em; } @Override public Class getManagedEntityClass() { return (Routage.class); } @Override public Routage getById(RoutageId id) { Query query = getEntityManager().createQuery("SELECT r FROM Routage r" + " LEFT JOIN FETCH r.groupeNoeudsEnvoi LEFT JOIN FETCH r.groupeNoeudsReception" + " LEFT JOIN FETCH r.groupeParticipantsEnvoi LEFT JOIN FETCH r.groupeParticipantsReception" + " LEFT JOIN FETCH r.noeudsEnvoi LEFT JOIN FETCH r.noeudsReception" + " LEFT JOIN FETCH r.groupeNoeudsReception LEFT JOIN FETCH r.participantsReception" + " LEFT JOIN FETCH r.groupeParticipantsReception LEFT JOIN FETCH r.participantsEnvoi" + " WHERE r.referentiel.version = :referentielVersion AND r.typeFichier.code = :codeTypeFichier"); query.setParameter("codeTypeFichier", id.getTypeFichier()); query.setParameter("referentielVersion", id.getReferentiel()); return (Routage) query .getResultList() .stream() .findFirst() .orElse(null); } }