package pl.com.bottega.documentmanagement.infrastructure; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Repository; import pl.com.bottega.documentmanagement.api.DocumentListenerManager; import pl.com.bottega.documentmanagement.domain.Document; import pl.com.bottega.documentmanagement.domain.DocumentNumber; import pl.com.bottega.documentmanagement.domain.repositories.DocumentRepository; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; /** * Created by maciuch on 22.06.16. */ @Repository public class JPADocumentRepository implements DocumentRepository { @PersistenceContext private EntityManager entityManager; @Autowired private DocumentListenerManager documentListenerManager; @Override public void save(Document document) { entityManager.persist(document); } @Override public Document load(DocumentNumber documentNumber) { Document document = entityManager.createQuery("FROM Document d " + "WHERE d.documentNumber = :num", Document.class).setParameter("num", documentNumber).getSingleResult(); documentListenerManager.subscribeListeners(document); return document; } }