当前位置: 首页 > 知识库问答 >
问题:

org.hibernate.exception.sqlgrammarexception错误:无法提取ResultSet

曾云
2023-03-14
@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服务器版本相对应的手册,了解第1行“leave leave2_where leave2_.leave_employee=staff0_.staff_code and project1_.proj”附近使用的正确语法

@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;
    ...
}

共有1个答案

薄腾
2023-03-14

1)在为leave.leave_start使用java.util.date时,应使用适当的@temporal值进行注释:

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

2)设置查询日期参数时,请尝试使用:

.setDate("startDate", startDate)

.setParameter("startDate", startDate, TemporalType.TIMESTAMP)
 类似资料:
  • 我无法获取结果,create查询正在执行,但之后将其转换为list无法工作。请帮我解决这个问题。为什么它没有被转换成列表我无法获取结果,创建查询正在被执行,但之后将它转换成列表不起作用。请帮我解决这个问题。为什么它没有被转换成列表 表脚本 bean类 控制器方法是: 错误日志 null AnswerEntity类

  • 我已经将支持JAR和jdbc驱动程序添加到我的项目中,但我仍然得到了低于例外情况 getting找不到resultset异常错误执行load命令:getting sqlgrammerexception 我的配置文件

  • 这是我的POJO类,名为Student,我为它创建了一个表来更新标记。 这是我的主要班级 当我尝试执行该操作时,它显示了另一个错误,错误是“student0_”。“verson”:无效标识符

  • 问题内容: 我正在尝试建立一个小的Hibernate工作样本,该样本在这里找到。但是,当我运行代码时,出现以下错误 但是我已经在数据库中有了一个名为“ person”的表,这是我修改后的hibernate.cfg.xml 谁能指出我在做什么错,那太好了,因为这是我第一次在Hibernate中尝试。谢谢! 编辑:Person.hbm.xml EDIT-II:日志文件(Postgresql.log)的

  • 问题内容: 我在Hibernate尝试了简单的程序,并发现了一堆异常。 我不知道到底是什么问题。 我有三个课程-书籍,阅读器和使用。最后一个是将前两个绑定为一对多。 这是我的: 这是异常消息: 的摘要: DB上的所有表均已创建,但为空。一切都还好。有什么建议么? 如何解决这个麻烦? 问题答案: 在MySQL中, USING 是保留字。 因此,只需使用实体上的注释来重命名表即可。就像是 我假设您有一

  • 问题内容: 我有一个连接到firebase.The问题的应用程序在设备上安装应用程序(在多个设备上工作)时。我读了很多的论坛,没有人works.I阅读在这里和这等on.Thanks! 错误在这里。 这是开始班 } 问题答案: 当由于API的错误在API 19(<4.4.2)设备下运行应用程序时,我也遇到了Firebase的相同问题。然后下面的 解决方案 为我工作: 在应用程序模块中build.gr