我遇到了非常典型的问题。我动态生成的查询就像这样...
UPDATE Templates t SET t.TEMPLATE_DATA = replace(t.TEMPLATE_DATA, 'Test\'s Test', 'Kent"s Test'), t.TEMPLATE_DATA = replace(t.TEMPLATE_DATA, 'Test"s Test', 'Kent"s Test'), UPDATE_DATE = NOW() where PRACTICE_ID = 1 AND CATEGORY_ID IN (1)
当我在db中明确地触发此查询时,这非常有效。但是通过使用hibernate的session.createQuery( - 我的查询 - )如果发生错误 QueryTranslatorException 。
Database : Mysql 5.3
有人遇到过这个问题吗? 提前谢谢。
答案 0 :(得分:3)
尝试在Hibernate中将其作为本机SQL查询运行:
session.createSQLQuery(-- query text --);
因为如果你使用
session.createQuery(-- query text --);
Hibernate将尝试将其作为HQL查询执行,这与通常的SQL查询不同。
HQL是面向对象的查询语言。它根据对象而不是表格来操作。 Here posted a brief description SQL和HQL之间的区别。但是,如果您有时间更好地阅读有关HQL和Native SQL用法的hibernate文档的相应部分。
答案 1 :(得分:2)
如果您想在休眠状态下执行SQL Query
,请使用:session.createSQLQuery(String query);