Implement Rider query by email (1.2.1 a)

This commit is contained in:
Tobias Eidelpes 2021-04-04 14:58:20 +02:00
parent 7264e610d0
commit c0658a1bec
3 changed files with 19 additions and 2 deletions

View File

@ -6,7 +6,7 @@ import javax.persistence.criteria.Root;
import java.util.List; import java.util.List;
public class GenericDAO<T> implements dst.ass1.jpa.dao.GenericDAO<T> { public class GenericDAO<T> implements dst.ass1.jpa.dao.GenericDAO<T> {
private final EntityManager entityManager; protected final EntityManager entityManager;
private final Class type; private final Class type;
public GenericDAO(EntityManager entityManager, Class type) { public GenericDAO(EntityManager entityManager, Class type) {

View File

@ -6,8 +6,13 @@ import dst.ass1.jpa.model.IRider;
import dst.ass1.jpa.model.impl.Rider; import dst.ass1.jpa.model.impl.Rider;
import javax.persistence.EntityManager; import javax.persistence.EntityManager;
import javax.persistence.NoResultException;
import javax.persistence.Query;
import java.util.Map; 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<IRider> implements IRiderDAO { public class RiderDAO extends GenericDAO<IRider> implements IRiderDAO {
public RiderDAO(EntityManager entityManager) { public RiderDAO(EntityManager entityManager) {
super(entityManager, Rider.class); super(entityManager, Rider.class);
@ -15,7 +20,13 @@ public class RiderDAO extends GenericDAO<IRider> implements IRiderDAO {
@Override @Override
public IRider findByEmail(String email) { 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 @Override

View File

@ -12,6 +12,12 @@ import static dst.ass1.jpa.util.Constants.*;
@Entity @Entity
@Table(uniqueConstraints = @UniqueConstraint(columnNames = {M_RIDER_ACCOUNT, M_RIDER_BANK_CODE})) @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 { public class Rider extends PlatformUser implements IRider {
@Column(unique = true, nullable = false) @Column(unique = true, nullable = false)
private String email; private String email;