org.hibernate.hql.internal.ast.QuerySyntaxException:意外令牌:4月第1行附近,第81列

时间:2016-04-22 06:54:09

标签: hibernate date

我正在尝试根据日期查询数据库中的数据列表。

这是我的代码:

@Override
public List<CoursChange> listeTauxChange(Date datJourCchn) {

    Query q = sessionFactory.getCurrentSession().createQuery(
            "from CoursChange  c where c.datJourCchn="+datJourCchn);
    return q.list();

}

错误是:

  

org.hibernate.hql.internal.ast.QuerySyntaxException:意外令牌:4月第1行第81列[来自com.gtec.GestionChangeDevise.entity.CoursChange c其中c.datJourCchn = Mon Apr 18 00:00:00 WAT 2016]

这是如何引起的?如何解决?

2 个答案:

答案 0 :(得分:3)

首先,不要通过将其与字符串化参数值连接来参数化查询。在查询字符串中使用namedpositioned参数声明,然后将参数值设置为Query对象。

EXEC xp_cmdshell 'bcp "EXEC tempdb.dbo.usp_myProc" queryout "c:\temp\Courses.xml" -S (local) -T -w -r'

答案 1 :(得分:-1)

你错过"from CoursChange c where c.datJourCchn = \"" + datJourCchn + "\"" 来包装datJourCchn

{{1}}

[来自com.gtec.GestionChangeDevise.entity.CoursChange c,其中c.datJourCchn = Mon Apr 18 00:00:00 WAT 2016]的第81列是一个空格,导致错误的查询字符串。