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;
public class GenericDAO<T> implements dst.ass1.jpa.dao.GenericDAO<T> {
private final EntityManager entityManager;
protected final EntityManager entityManager;
private final 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 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<IRider> implements IRiderDAO {
public RiderDAO(EntityManager entityManager) {
super(entityManager, Rider.class);
@ -15,8 +20,14 @@ public class RiderDAO extends GenericDAO<IRider> implements IRiderDAO {
@Override
public IRider findByEmail(String email) {
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
public Double getTotalDistanceOfMostRecentRider() {

View File

@ -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;