package fr.openwide.core.test.jpa.more.business.audit.dao; import javax.persistence.NoResultException; import javax.persistence.NonUniqueResultException; import javax.persistence.TypedQuery; import javax.persistence.criteria.CriteriaBuilder; import javax.persistence.criteria.CriteriaQuery; import javax.persistence.criteria.Root; import org.springframework.stereotype.Repository; import fr.openwide.core.jpa.more.business.audit.dao.AbstractAuditDaoImpl; import fr.openwide.core.test.jpa.more.business.audit.model.MockAudit; import fr.openwide.core.test.jpa.more.business.audit.model.MockAuditAction; import fr.openwide.core.test.jpa.more.business.audit.model.MockAuditActionEnum; import fr.openwide.core.test.jpa.more.business.audit.model.MockAuditFeature; import fr.openwide.core.test.jpa.more.business.audit.model.MockAuditFeatureEnum; @Repository("mockAuditDao") public class MockAuditDaoImpl extends AbstractAuditDaoImpl<MockAudit> implements IMockAuditDao { @Override public MockAuditAction getAuditActionByEnum(MockAuditActionEnum auditActionEnum) { CriteriaBuilder cb = getEntityManager().getCriteriaBuilder(); CriteriaQuery<MockAuditAction> cq = cb.createQuery(MockAuditAction.class); Root<MockAuditAction> root = cq.from(MockAuditAction.class); cq.select(root); cq.where(cb.equal(root.get("auditActionEnum"), auditActionEnum)); cq.orderBy(cb.asc(root.get("position"))); TypedQuery<MockAuditAction> query = getEntityManager().createQuery(cq); try { return query.getSingleResult(); } catch (NoResultException e) { return null; } catch (NonUniqueResultException e) { return query.getResultList().iterator().next(); } } @Override public MockAuditFeature getAuditFeatureByEnum(MockAuditFeatureEnum auditFeatureEnum) { CriteriaBuilder cb = getEntityManager().getCriteriaBuilder(); CriteriaQuery<MockAuditFeature> cq = cb.createQuery(MockAuditFeature.class); Root<MockAuditFeature> root = cq.from(MockAuditFeature.class); cq.select(root); cq.where(cb.equal(root.get("auditFeatureEnum"), auditFeatureEnum)); cq.orderBy(cb.asc(root.get("position"))); TypedQuery<MockAuditFeature> query = getEntityManager().createQuery(cq); try { return query.getSingleResult(); } catch (NoResultException e) { return null; } catch (NonUniqueResultException e) { return query.getResultList().iterator().next(); } } }