Implement Driver active employments (1.2.1 b)

This commit is contained in:
Tobias Eidelpes 2021-04-04 17:47:21 +02:00
parent 95c96e5a5f
commit 93608291ad
2 changed files with 18 additions and 1 deletions

View File

@ -5,8 +5,12 @@ import dst.ass1.jpa.model.IDriver;
import dst.ass1.jpa.model.impl.Driver; import dst.ass1.jpa.model.impl.Driver;
import javax.persistence.EntityManager; import javax.persistence.EntityManager;
import javax.persistence.Query;
import java.util.Collection; import java.util.Collection;
import static dst.ass1.jpa.util.Constants.M_DRIVER_ORGANIZATIONS;
import static dst.ass1.jpa.util.Constants.Q_ACTIVE_IN_MULITIPLE_ORGANIZATIONS_DRIVERS;
public class DriverDAO extends GenericDAO<IDriver> implements IDriverDAO { public class DriverDAO extends GenericDAO<IDriver> implements IDriverDAO {
public DriverDAO(EntityManager entityManager) { public DriverDAO(EntityManager entityManager) {
super(entityManager, Driver.class); super(entityManager, Driver.class);
@ -14,6 +18,8 @@ public class DriverDAO extends GenericDAO<IDriver> implements IDriverDAO {
@Override @Override
public Collection<IDriver> findActiveInMultipleOrganizationsDrivers(Long numberOfOrganizations) { public Collection<IDriver> findActiveInMultipleOrganizationsDrivers(Long numberOfOrganizations) {
return null; Query query = super.entityManager.createNamedQuery(Q_ACTIVE_IN_MULITIPLE_ORGANIZATIONS_DRIVERS);
query.setParameter(M_DRIVER_ORGANIZATIONS, numberOfOrganizations);
return query.getResultList();
} }
} }

View File

@ -6,7 +6,18 @@ import javax.persistence.*;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collection; import java.util.Collection;
import static dst.ass1.jpa.util.Constants.Q_ACTIVE_IN_MULITIPLE_ORGANIZATIONS_DRIVERS;
@Entity @Entity
@NamedQuery(
name = Q_ACTIVE_IN_MULITIPLE_ORGANIZATIONS_DRIVERS,
query = "SELECT d FROM Driver d " +
"LEFT JOIN Employment e " +
"ON d.id = e.id.driver " +
"WHERE e.active = true " +
"AND e.since < DATEADD('Month', -1, CURRENT_DATE) " +
"GROUP BY e.id.driver HAVING COUNT(*) > :organizations"
)
public class Driver extends PlatformUser implements IDriver { public class Driver extends PlatformUser implements IDriver {
@ManyToOne(targetEntity = Vehicle.class, optional = false) @ManyToOne(targetEntity = Vehicle.class, optional = false)
private IVehicle vehicle; private IVehicle vehicle;