我得在休眠以下命名查詢:表名稱故障使用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的更好的選擇。
感謝您的任何輸入, 李
數據庫是MySQL的一個,它被設置爲不區分大小寫。但我認爲這不是個案。我現在只是在嘗試創建聲明,因此無論我使用哪種情況都應該沒問題。它似乎只是我需要刪除的那些引號。 – 2009-08-14 14:25:25