Ошибка org.hibernate.exception.SQLGrammarException: не удалось извлечь ResultSet - PullRequest
0 голосов
/ 04 февраля 2019

У меня есть 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;
    ...
}

Ответы [ 2 ]

0 голосов
/ 06 февраля 2019

Хорошо, после долгих испытаний я обнаружил причину ошибки.По какой-то неизвестной причине в запросе, по-видимому, возникла проблема с именем ссылочной таблицы «уходить», и она выдает ошибку всякий раз, когда я пытаюсь получить данные из нее.Однако если я переименую таблицу во что-то простое, например, «уходит», запрос будет выполнен успешно.Кто-нибудь может знать, почему это так?

0 голосов
/ 04 февраля 2019

1) Поскольку вы используете java.util.Date для Leave.leave_Start, вы должны аннотировать с правильным @Temporal значением:

@Temporal(TemporalType.TIMESTAMP)
@Column(name="Leave_Start")
Date leave_Start;

2) Когдаустанавливая параметры даты запроса, попробуйте использовать:

.setDate("startDate", startDate)

или

.setParameter("startDate", startDate, TemporalType.TIMESTAMP)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...