Bonjour, voilà j'ai un petit soucis avec une requête d'insert de masse en HQL, elle ne passe pas et me génère une exception ( ).


Le petit bout de code incriminé (SGBD Oracle) :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
String sqlRequete = "insert into Function ";
sqlRequete = sqlRequete + "(version, code, role, application, number, functionCode) ";
sqlRequete = sqlRequete + "select Function.version, '" + Code +  "', '" + role + "', ";
sqlRequete = sqlRequete + "Function.application, Function.number, Function.functionCode ";
sqlRequete = sqlRequete + "from function Function ";
sqlRequete = sqlRequete + "where f.functionCode = 'LA' ";
 
query = getPersistenceManager().createQuery(sqlRequete);
result = query.executeUpdate();
Les variables code et role sont bien évidemment passées en paramètres et je ne renseigne pas l'id car j'ai une sequence Oracle - j'ai déjà testé le cas où je renseigne "manuellement" l'id.

Je ne pense pas que cela puisse venir d'un problème de fichiers de configuration car mes requêtes HQL de select marchent très bien, ainsi que les insert, update et delete réalisées via l'hibernate session.

L'exception générée :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
org.hibernate.hql.ast.QuerySyntaxError: unexpected token: insert
 near line 1, column 1 [insert into Function 
(version, code, role, application, Number, 
FunctionCode) select function.version, '54', 
'UPM', Function.application, 
Function.Number, 
Function.FunctionCode from 
Function 
Function where Function.FunctionCode = 'LA' ]
J'avoue que j'y perd mon latin^^
J'ai réellement besoin d'un coup de pouce car cela me semble tellement idiot que j'ai du zapper un élément totalement évident^^

Merci d'avance!