The sorting SQL:s now returns the same number of employees when sorting on keyword as returned when sorting on last name.
This commit is contained in:
parent
3ad8621ae9
commit
cdc50fae90
src/main/java/se/su/dsv/scipro/springdata
@ -16,7 +16,7 @@ import java.util.List;
|
|||||||
*/
|
*/
|
||||||
@Transactional ( readOnly = true )
|
@Transactional ( readOnly = true )
|
||||||
public interface SupervisorRepo extends JpaRepository<Employee, Long>, QueryDslPredicateExecutor<Employee> {
|
public interface SupervisorRepo extends JpaRepository<Employee, Long>, QueryDslPredicateExecutor<Employee> {
|
||||||
// select employeeFull from Employee employeeFull where employeeFull.id in (
|
|
||||||
@Query ("select employee.id " +
|
@Query ("select employee.id " +
|
||||||
"from Employee employee " +
|
"from Employee employee " +
|
||||||
"join employee.keywords.keywords keywords " +
|
"join employee.keywords.keywords keywords " +
|
||||||
@ -27,21 +27,14 @@ public interface SupervisorRepo extends JpaRepository<Employee, Long>, QueryDslP
|
|||||||
@Param("keywordTypeName")
|
@Param("keywordTypeName")
|
||||||
String keywordTypeName);
|
String keywordTypeName);
|
||||||
|
|
||||||
// hämtar employees med keywords där typen är type name... men en employee kan ha keywords av flera olika type names
|
// dessa två metoder hämtar employees med keywords där typen är type name... men en employee kan ha keywords av flera olika type names
|
||||||
|
|
||||||
@Query ("select employee.id " +
|
@Query ("select employee.id " +
|
||||||
"from Employee employee " +
|
"from Employee employee " +
|
||||||
"join employee.keywords.keywords keywords " +
|
"join employee.keywords.keywords keywords " +
|
||||||
"where keywords.type.name = :keywordTypeName " +
|
"where keywords.type.name = :keywordTypeName " +
|
||||||
"group by employee.id " +
|
"group by employee.id " +
|
||||||
//"order by size(employee.keywords.keywords) asc ")
|
|
||||||
"order by size(employee.keywords.keywords) asc ")
|
"order by size(employee.keywords.keywords) asc ")
|
||||||
// sum(keywords.type.name = :keywordTypeName)
|
|
||||||
/*@Query ("select employeeFull from Employee employeeFull where employeeFull.id in (" +
|
|
||||||
"select employee.id from Employee employee inner join employee.keywords.keywords keywords " +
|
|
||||||
"where keywords.type.name = :keywordTypeName " + //and keywords.deleted = false and employee.deleted = false)) " +
|
|
||||||
"group by employee.id " +
|
|
||||||
"order by size(employeeFull.keywords.keywords) asc)")*/
|
|
||||||
//"CASE ':ascending' WHEN 'true' THEN (size(employeeFull.keywords.keywords) asc " +
|
//"CASE ':ascending' WHEN 'true' THEN (size(employeeFull.keywords.keywords) asc " +
|
||||||
//"ELSE size(employeeFull.keywords.keywords) desc END" +
|
//"ELSE size(employeeFull.keywords.keywords) desc END" +
|
||||||
//"ELSE employeeFull.keywords.keywords.size desc " +
|
//"ELSE employeeFull.keywords.keywords.size desc " +
|
||||||
@ -49,16 +42,5 @@ public interface SupervisorRepo extends JpaRepository<Employee, Long>, QueryDslP
|
|||||||
public List<Long> findSupervisorsOrderedByNumKeywordsAscending(
|
public List<Long> findSupervisorsOrderedByNumKeywordsAscending(
|
||||||
@Param("keywordTypeName")
|
@Param("keywordTypeName")
|
||||||
String keywordTypeName);
|
String keywordTypeName);
|
||||||
|
|
||||||
/* public List<Employee> findSupervisorsOrderedByNumKeywords(String keywordTypeName, Boolean asc) {
|
|
||||||
switch (asc) {
|
|
||||||
case Direction.ASC:
|
|
||||||
return findSupervisorsOrderedByNumKeywordsAscending(keywordTypeName);
|
|
||||||
case Direction.DESC:
|
|
||||||
default:
|
|
||||||
return findSupervisorsOrderedByNumKeywordsAscending(keywordTypeName);
|
|
||||||
}
|
|
||||||
return findSupervisorsOrderedByNumKeywordsAscending(keywordTypeName);
|
|
||||||
}*/
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -38,14 +38,9 @@ public class SupervisorServiceImpl extends AbstractQueryService<Employee, Long>
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<Employee> findAllEmployees(org.springframework.data.domain.Sort orders) {
|
public List<Employee> findAllEmployees(org.springframework.data.domain.Sort orders) {
|
||||||
return supervisorRepo.findAll(orders); // 218 st
|
return supervisorRepo.findAll(orders); // // 120414: the list should return 218 employees
|
||||||
}
|
}
|
||||||
|
|
||||||
/* @Override
|
|
||||||
public List<Employee> findSupervisorsOrderedByNumKeywords(String keywordTypeName, Sort.Direction sortDirection) {
|
|
||||||
return supervisorRepo.findSupervisorsOrderedByNumKeywords(keywordTypeName, sortDirection);
|
|
||||||
}*/
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<Employee> findSupervisorsOrderedByNumKeywordsDescending(String keywordTypeName) {
|
public List<Employee> findSupervisorsOrderedByNumKeywordsDescending(String keywordTypeName) {
|
||||||
List<Long> employeeIDs = new ArrayList<Long>();
|
List<Long> employeeIDs = new ArrayList<Long>();
|
||||||
@ -77,12 +72,12 @@ public class SupervisorServiceImpl extends AbstractQueryService<Employee, Long>
|
|||||||
List<Employee> employeeList = new ArrayList<Employee>();
|
List<Employee> employeeList = new ArrayList<Employee>();
|
||||||
if(direction.equalsIgnoreCase("desc")) {
|
if(direction.equalsIgnoreCase("desc")) {
|
||||||
employeeList.addAll(getEmployeesThatHaveKeywords(keywordTypeName, direction));
|
employeeList.addAll(getEmployeesThatHaveKeywords(keywordTypeName, direction));
|
||||||
employeeList.addAll(getEmployeesWithoutKeywords());
|
employeeList.addAll(getEmployeesWithoutKeywords(keywordTypeName));
|
||||||
} else {
|
} else {
|
||||||
employeeList.addAll(getEmployeesWithoutKeywords());
|
employeeList.addAll(getEmployeesWithoutKeywords(keywordTypeName));
|
||||||
employeeList.addAll(getEmployeesThatHaveKeywords(keywordTypeName, direction));
|
employeeList.addAll(getEmployeesThatHaveKeywords(keywordTypeName, direction));
|
||||||
}
|
}
|
||||||
return employeeList; // totalt 129 st för regular men 156 st för area och 218 för last name (vilken innehåller både keywords Area och Regular)
|
return employeeList; // 120414: the list should return 218 employees
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<Employee> getEmployeesThatHaveKeywords(String keywordTypeName, String direction) {
|
private List<Employee> getEmployeesThatHaveKeywords(String keywordTypeName, String direction) {
|
||||||
@ -109,7 +104,7 @@ public class SupervisorServiceImpl extends AbstractQueryService<Employee, Long>
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private List<Employee> getEmployeesWithoutKeywords() {
|
private List<Employee> getEmployeesWithoutKeywords(String keywordTypeName) {
|
||||||
List<Employee> employeeList = new ArrayList<Employee>();
|
List<Employee> employeeList = new ArrayList<Employee>();
|
||||||
String nativeSQL = "select " +
|
String nativeSQL = "select " +
|
||||||
"role.id " +
|
"role.id " +
|
||||||
@ -119,12 +114,16 @@ public class SupervisorServiceImpl extends AbstractQueryService<Employee, Long>
|
|||||||
"where " +
|
"where " +
|
||||||
"role.rolename = 'Employee' and " +
|
"role.rolename = 'Employee' and " +
|
||||||
"user.id = role.user_id and not exists " +
|
"user.id = role.user_id and not exists " +
|
||||||
"(select " +
|
"(select 1 " +
|
||||||
"1 " +
|
|
||||||
"from " +
|
"from " +
|
||||||
"Employee_Keyword ek " +
|
"Employee_Keyword ek, " +
|
||||||
|
"Keyword k, " +
|
||||||
|
"KeywordType kt " +
|
||||||
"where " +
|
"where " +
|
||||||
"ek.role_id = role.id) " +
|
"ek.role_id = role.id and " +
|
||||||
|
"k.id = ek.keywords_id and " +
|
||||||
|
"k.type_id = kt.id and " +
|
||||||
|
"kt.name= '" + keywordTypeName + "') " +
|
||||||
"order by " +
|
"order by " +
|
||||||
"user.lastName asc ";
|
"user.lastName asc ";
|
||||||
return runQueryAddToList(employeeList, nativeSQL);
|
return runQueryAddToList(employeeList, nativeSQL);
|
||||||
@ -140,6 +139,6 @@ public class SupervisorServiceImpl extends AbstractQueryService<Employee, Long>
|
|||||||
employeeList.add(employee);
|
employeeList.add(employee);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return employeeList; // 36 st + 93 st
|
return employeeList;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user