J'ai la requête suivante nommée dans Hibernate:Nom de la table Problèmes avec Hibernate requête nommée
<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>
Je suis donc en train d'exécuter cette ligne en utilisant la ligne suivante (constantes pointent pour corriger les éléments):
getSession().getNamedQuery(CREATE_SQL).setString(CREATE_SQL_TABLE_NAME_PARAM, "wibble").executeUpdate();
maintenant, quand j'exécuter le code, je reçois une erreur SQL concernant le nom de la table qui est à venir entouré par des guillemets:
CREATE TABLE IF NOT EXISTS 'wibble' (
Si je prends la requête générée et l'essaie sans les guillemets autour du nom de la table, la requête fonctionne bien. Ce sont juste ces citations qui causent mon problème.
Donc ma question est: Qu'est-ce que je dois utiliser au lieu de setString
pour m'assurer que mon paramètre n'est pas entouré de guillemets? J'ai essayé setParameter
sans aucune chance et je ne pouvais pas trouver une meilleure alternative de l'API.
Merci pour toute entrée, Lee
La base de données est une base de données MySQL, qui ne tient pas compte de la casse. Je ne pense pas que ce soit un problème. J'essaie juste une déclaration de création pour le moment donc à ce stade tout ce que j'utilise devrait être bon. Il semble que ce soient ces citations dont je dois me débarrasser. –