Come costruire stringa valida HQL, che equivale a campo di tabellaCome mettere "null" nella colonna usando HQL?
UPDATE SET = null DOVE ....
Come costruire stringa valida HQL, che equivale a campo di tabellaCome mettere "null" nella colonna usando HQL?
UPDATE SET = null DOVE ....
vuoi dire alla rinfusa HQL aggiornare? Prova questo
UPDATE myEntity e SET e.myProperty = null WHERE ...
È inoltre possibile utilizzare una versione con parametri di cui sopra
UPDATE myEntity e SET e.myProperty = :param WHERE ...
Nel codice:
int updatedEntities = session.createQuery(updateQueryHQL)
.setString("param", myValue) // or .setString("param", null)
.executeUpdate();
Vedi documentation per i dettagli.
Se non si stanno eseguendo aggiornamenti in blocco, è necessario impostare la proprietà su NULL e mantenere l'entità normalmente.
Grazie, ma ... entrambe le versioni lanciano HibernateException !!! setString ("param", myValue) executeUpdate(); funziona solo quando myValue non è nullo !!! –
Che tipo di HibernateException (cosa dice l'errore)? La tua tabella autorizza NULL in quella colonna? Quella proprietà è in realtà una stringa o è di qualche altro tipo? – ChssPly76
1. La colonna della tabella consente NULL 2. La proprietà è in realtà String (questo stesso problema con la colonna di tipo 'Date') 2. L'errore di Hibernate Exception purtroppo non è valido ('Autorizzazione UPDATE mancante sull'oggetto .....) . Non è vero: nel caso myValue sia una stringa vuota o non nullo - la colonna richiesta viene aggiornata senza problemi –
Perché la tua istruzione di aggiornamento deve essere eseguita in HQL? Hai questa tabella mappata su un'entità nel sistema? Se lo fai, allora puoi semplicemente impostare la proprietà che associa a quella colonna su null, ed eseguire un salvataggio su quell'entità. per esempio.
myObject.setMyProperty (null); getSessionFactory(). GetCurrentSession(). Save (myObject);
Questo dovrebbe funzionare per te, ma devi avere un'entità mappata alla tabella in questione.
potrebbe essere una domanda stupida, ma, questo aggiornamento SQL funziona da qualche console SQL? vale forse un vincolo NOT NULL sulla colonna 'campo'? –
Lo sql è ok - funziona da console bene! –