2

我遇到了非常典型的问题。我这样动态生成的查询...

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 中明确触发此查询时,这非常有效。但是通过使用休眠的 session.createQuery(-- my query --) if thwows 一个错误QueryTranslatorException

Database : Mysql 5.3

有没有人遇到过这个问题?提前致谢。

4

2 回答 2

3

尝试在 Hibernate 中将其作为本机 SQL 查询运行:

session.createSQLQuery(-- query text --);

因为如果你使用

session.createQuery(-- query text --);

Hibernate 将尝试将其作为 HQL 查询执行,这与通常的 SQL 查询不同。

HQL 是面向对象的查询语言。它根据对象而不是表来操作。这里贴出SQL和HQL区别的简要说明。但是,如果您有时间更好地阅读有关HQLNative SQL使用的 hibernate 文档的适当部分。

于 2012-08-13T06:57:16.827 回答
2

如果要SQL Query在休眠中执行,请使用:session.createSQLQuery(String query);

于 2012-08-13T06:56:26.587 回答