У меня есть hql-запрос, который я выполняю, но получаю сообщение об ошибке, в котором я не совсем понимаю причину.
Это мой код:
@Override
public List<StaffRequest> getStaffLeaveRequest(String userID, Date startDate, Date endDate)
{
Session currentSession = sessionFactory.getCurrentSession();
List<StaffRequest> results =
currentSession.createQuery("select new com.timesheet_Webservice.CustomEntity.StaffRequest(lr.leave_ID, lr.leave_Employee, concat(s.staff_First_Name, ' ', s.staff_Last_Name), "
+ "(lr.leave_Days*8.5), lr.leave_Comments, '1805', concat(pro.project_Pastel_Prefix, ' - ', pro.project_Description), lr.leave_Start, lr.leave_End, lr.leave_IsApproved, "
+ "(select lt.leaveType_Description from LeaveType lt where lt.leaveType_ID = lr.leave_Type)) "
+ "from Staff s, Project pro, Leave lr "
+ "where lr.leave_Employee = s.staff_Code and pro.project_Code = 1805 and lr.leave_Approved = :userID and lr.leave_IsApproved = 0 and s.staff_IsEmployee <> 0 "
+ "and lr.leave_Start between :startDate and :endDate "
+ "order by concat(s.staff_First_Name, ' ', s.staff_Last_Name)")
.setParameter("userID",userID).setParameter("startDate", startDate).setParameter("endDate", endDate).getResultList();
return results;
}
Я получил этоошибка на веб-странице при попытке ее выполнить:
org.hibernate.exception.SQLGrammarException: не удалось извлечь ResultSet
А также эта консольная ошибка:
ОШИБКА: в синтаксисе SQL имеется ошибка;проверьте руководство, соответствующее вашей версии сервера MariaDB, на предмет правильного синтаксиса, который можно использовать рядом с 'Leave листьями2_, где left2_.Leave_Employee = staff0_.Staff_Code и project1_.Proj' в строке 1
Кажется, это указывает на некоторыеошибка в предложении where, но я не вижу ничего особенно неправильного.
ОБНОВЛЕНИЕ: Классы сущностей
Проект
@Entity
@Table(name="project")
public class Project {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="Project_Code")
public int project_Code;
@Column(name="Project_Customer")
public int project_Customer;
//A lot more attributes...
}
Персонал
@Entity
@Table(name="staff")
public class Staff
{
@Id
@Column(name="Staff_Code")
public String staff_Code;
...
}