我在 Hibernate 中有以下命名查询:
<sql-query name="CreateLogTable">
CREATE TABLE IF NOT EXISTS :tableName (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`url` VARCHAR (750) NOT NULL,
`query` VARCHAR (500),
`ipaddress` VARCHAR (39),
`datetime` DATETIME NOT NULL,
`hits` MEDIUMINT UNSIGNED DEFAULT '0' NOT NULL,
`path_id` VARCHAR (8),
PRIMARY KEY(`id`),
UNIQUE(`id`),
INDEX(`id`,`query`,`datetime`,`path_id`)
) TYPE = MyISAM
</sql-query>
然后我尝试使用以下行执行此行(常量指向正确的项目):
getSession().getNamedQuery(CREATE_SQL).setString(CREATE_SQL_TABLE_NAME_PARAM, "wibble").executeUpdate();
现在,当我执行代码时,我收到一个关于表名的 SQL 错误,该表名被引号包围:
CREATE TABLE IF NOT EXISTS 'wibble' (
如果我使用生成的查询并在表名周围没有引号的情况下尝试它,则查询可以正常工作。只是那些引号引起了我的问题。
所以我的问题是:我需要使用什么来代替setString
确保我的参数没有被引号包围?我试过setParameter
没有运气,我无法从 API 中找到更好的选择。
感谢您的任何意见,李