From c0658a1becc2314b9f971f81a0dac256a07be351 Mon Sep 17 00:00:00 2001 From: Tobias Eidelpes Date: Sun, 4 Apr 2021 14:58:20 +0200 Subject: [PATCH] Implement Rider query by email (1.2.1 a) --- .../main/java/dst/ass1/jpa/dao/impl/GenericDAO.java | 2 +- .../main/java/dst/ass1/jpa/dao/impl/RiderDAO.java | 13 ++++++++++++- .../main/java/dst/ass1/jpa/model/impl/Rider.java | 6 ++++++ 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/ass1-jpa/src/main/java/dst/ass1/jpa/dao/impl/GenericDAO.java b/ass1-jpa/src/main/java/dst/ass1/jpa/dao/impl/GenericDAO.java index c339143..33642b1 100644 --- a/ass1-jpa/src/main/java/dst/ass1/jpa/dao/impl/GenericDAO.java +++ b/ass1-jpa/src/main/java/dst/ass1/jpa/dao/impl/GenericDAO.java @@ -6,7 +6,7 @@ import javax.persistence.criteria.Root; import java.util.List; public class GenericDAO implements dst.ass1.jpa.dao.GenericDAO { - private final EntityManager entityManager; + protected final EntityManager entityManager; private final Class type; public GenericDAO(EntityManager entityManager, Class type) { diff --git a/ass1-jpa/src/main/java/dst/ass1/jpa/dao/impl/RiderDAO.java b/ass1-jpa/src/main/java/dst/ass1/jpa/dao/impl/RiderDAO.java index 0a9f99f..96d58db 100644 --- a/ass1-jpa/src/main/java/dst/ass1/jpa/dao/impl/RiderDAO.java +++ b/ass1-jpa/src/main/java/dst/ass1/jpa/dao/impl/RiderDAO.java @@ -6,8 +6,13 @@ import dst.ass1.jpa.model.IRider; import dst.ass1.jpa.model.impl.Rider; import javax.persistence.EntityManager; +import javax.persistence.NoResultException; +import javax.persistence.Query; import java.util.Map; +import static dst.ass1.jpa.util.Constants.M_RIDER_EMAIL; +import static dst.ass1.jpa.util.Constants.Q_RIDER_BY_EMAIL; + public class RiderDAO extends GenericDAO implements IRiderDAO { public RiderDAO(EntityManager entityManager) { super(entityManager, Rider.class); @@ -15,7 +20,13 @@ public class RiderDAO extends GenericDAO implements IRiderDAO { @Override public IRider findByEmail(String email) { - return null; + Query query = super.entityManager.createNamedQuery(Q_RIDER_BY_EMAIL); + query.setParameter(M_RIDER_EMAIL, email); + try { + return (IRider) query.getSingleResult(); + } catch (NoResultException e) { + return null; + } } @Override diff --git a/ass1-jpa/src/main/java/dst/ass1/jpa/model/impl/Rider.java b/ass1-jpa/src/main/java/dst/ass1/jpa/model/impl/Rider.java index ca910ac..f0b17b8 100644 --- a/ass1-jpa/src/main/java/dst/ass1/jpa/model/impl/Rider.java +++ b/ass1-jpa/src/main/java/dst/ass1/jpa/model/impl/Rider.java @@ -12,6 +12,12 @@ import static dst.ass1.jpa.util.Constants.*; @Entity @Table(uniqueConstraints = @UniqueConstraint(columnNames = {M_RIDER_ACCOUNT, M_RIDER_BANK_CODE})) +@NamedQueries({ + @NamedQuery( + name = Q_RIDER_BY_EMAIL, + query = "SELECT r from Rider r WHERE r.email = :email" + ) +}) public class Rider extends PlatformUser implements IRider { @Column(unique = true, nullable = false) private String email;