diff --git a/ass1-jpa/src/main/java/dst/ass1/jpa/dao/impl/DriverDAO.java b/ass1-jpa/src/main/java/dst/ass1/jpa/dao/impl/DriverDAO.java index 09c84da..869bd09 100644 --- a/ass1-jpa/src/main/java/dst/ass1/jpa/dao/impl/DriverDAO.java +++ b/ass1-jpa/src/main/java/dst/ass1/jpa/dao/impl/DriverDAO.java @@ -5,8 +5,12 @@ import dst.ass1.jpa.model.IDriver; import dst.ass1.jpa.model.impl.Driver; import javax.persistence.EntityManager; +import javax.persistence.Query; 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 implements IDriverDAO { public DriverDAO(EntityManager entityManager) { super(entityManager, Driver.class); @@ -14,6 +18,8 @@ public class DriverDAO extends GenericDAO implements IDriverDAO { @Override public Collection 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(); } } diff --git a/ass1-jpa/src/main/java/dst/ass1/jpa/model/impl/Driver.java b/ass1-jpa/src/main/java/dst/ass1/jpa/model/impl/Driver.java index 409a136..d0c9733 100644 --- a/ass1-jpa/src/main/java/dst/ass1/jpa/model/impl/Driver.java +++ b/ass1-jpa/src/main/java/dst/ass1/jpa/model/impl/Driver.java @@ -6,7 +6,18 @@ import javax.persistence.*; import java.util.ArrayList; import java.util.Collection; +import static dst.ass1.jpa.util.Constants.Q_ACTIVE_IN_MULITIPLE_ORGANIZATIONS_DRIVERS; + @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 { @ManyToOne(targetEntity = Vehicle.class, optional = false) private IVehicle vehicle;