j'ai le HQL suivant:
String hql = "UPDATE Buchung as b " +
"set STORNO = :Storno " +
"where ID = :BuchungID";
Est-il possible de mettre à jour plus d'une colonne dans un HQL? Par exemple:
String hql = "UPDATE Buchung as b " +
"set STORNO = :Storno " +
"set NAME = :Name " +
......
"where ID = :BuchungID";
Je sais comment faire cela dans MSSQL mais je ne sais pas comment faire cela dans Hibernate.
HQL n'est pas différent de SQL dans ce cas. Utilisez simplement une virgule pour séparer les colonnes:
String hql = "UPDATE Buchung as b set " +
"STORNO = :Storno," +
"NAME = :Name " +
......
"where ID = :BuchungID";
La syntaxe est similaire à la syntaxe SQL, mais avec des champs/propriétés mappés au lieu de colonnes:
update Buchung set storNo = :storno, name = :name where id = :buchungID
Notez que si l'objectif est de modifier une instance d'entité unique, vous feriez mieux de faire
Buchung b = (Buchung) session.get(Buchung.class, buchungId);
b.setStorNo(newStorno);
b.setName(newName);
String hql = "UPDATE Buchung as b set " +
"STORNO = :Storno," +
"NAME = :Name " +
......
"where ID = :BuchungID";
Query qr = session.createSQLQuery(hql);
qr.setParameter("Storno","sto_value");
qr.setParameter("Name","name_value");
...
qr.executeUpdate();
normalement, vous devez avoir "transaction" pour lancer la requête
Transaction transaction = null;
transaction = session.begintransaction();
...
transaction.commit();