2010-05-27 3 views
1

Je personnalise l'insertion SQL générée par hibernate et j'ai rencontré un problème. Lorsque Hibernate génère la requête par lui-même, il insère des données dans les deux premières colonnes de la table, mais cela entraîne une erreur de base de données puisque les quatre colonnes de la table ne sont pas nullables. Pour que l'insertion soit effectuée correctement, elle doit insérer les mêmes données dans deux colonnes du nouvel enregistrement. Cela signifie que j'ai besoin d'Hibernate pour lier les mêmes données à deux paramètres différents dans la requête (instruction préparée) que j'écris.Réutilisation d'un paramètre anonyme dans une instruction préparée

Y a-t-il une syntaxe SQL qui me permet de faire référence à des paramètres anonymes liés à une instruction préparée dans un ordre différent de celui auquel ils sont liés?

Détails

REF_USER_PAGE_XREF 
---------------------------------------- 
PK FK1 | NETWORK_ID  | VARCHAR2(100) 
PK FK1 | PAGE_PATH  | VARCHAR2(1000) 
     | USER_LAST_UPDT | VARCHAR2(100) 
     | TMSP_LAST_UPDT | DATE 

insert into 
    REF_USER_PAGE_XREF(
     NETWORK_ID, 
     PAGE_PATH, 
     TMSP_LAST_UPDT, 
     USER_LAST_UPDT) 
values (
    ?, /* want to insert the same data here */ 
    ?, 
    ?, /* and here */ 
    (select 
     to_char(sysdate, 'DD-MON-YY') 
    from 
     dual) 

Je veux insérer les mêmes données dans les premier et troisième paramètres anonymes.

Réponse final (fonction de la réponse de @mdma)

insert into 
    REF_USER_PAGE_XREF(
     NETWORK_ID, 
     PAGE_PATH, 
     USER_LAST_UPDT, 
     TMSP_LAST_UPDT) 
select 
    Param1, 
    Param2, 
    Param1, 
    (select 
     to_char(sysdate, 'DD-MON-YY') 
    from 
     dual) 
from 
    (select 
     ? as Param1, 
     ? as Param2 
    from 
     dual) params 

Répondre

1

Vous pouvez écrire

INSERT INTO REF_USER_ROLE_XRE 
    SELECT Param1, Param2, Param1, 
    (select to_char(sysdate, 'DD-MON-YY') from dual) 
FROM 
    (SELECT ? AS Param1, ? AS Param2) params 
+0

Exactement ce que je cherchais. Merci beaucoup. –

Questions connexes