tengo el Siguiente HQL:

String hql = "UPDATE Buchung as b " +
             "set STORNO = :Storno " +
             "where ID = :BuchungID";

Es posible Actualizar más de una columna en una HQL? Por Ejemplo:

String hql = "UPDATE Buchung as b " +
              "set STORNO = :Storno " +
              "set NAME = :Name " +
               ......  
              "where ID = :BuchungID";

Sé cómo hacer que en MSSQL, pero no sé cómo hacerlo en modo de Hibernación.

OriginalEl autor Paks | 2012-09-06

3 Comentarios

  1. 26

    HQL no es diferente de SQL en este caso. Sólo use una coma para separar las columnas:

    String hql = "UPDATE Buchung as b set " +
              "STORNO = :Storno," +
              "NAME = :Name " +
               ......  
              "where ID = :BuchungID";
    Gracias trabajó como un encanto!

    OriginalEl autor Miroslav Popovic

  2. 2

    La sintaxis es similar a la sintaxis de SQL, pero con campos asignados/propiedades en lugar de columnas:

    update Buchung set storNo = :storno, name = :name where id = :buchungID

    Tenga en cuenta que si el objetivo es modificar una entidad única instancia, es mejor hacer

    Buchung b = (Buchung) session.get(Buchung.class, buchungId);
    b.setStorNo(newStorno);
    b.setName(newName);
    Gracias también por tu ayuda!
    Nizet qué hacer para este caso update employee set empName= :empname, address = :address where dept = :dept. donde yo no actualización basado en el id.
    A continuación, una consulta de actualización es más eficiente. Usted podría alféizar de la carga de todas las correspondientes entidades de utilizar una consulta de selección, y actualizarlos en un bucle, sin embargo. Ten en cuenta que una actualización directa de consulta omite el primer nivel de cache.

    OriginalEl autor JB Nizet

  3. 1
        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();

    normal, usted debe tener una «transacción» para ejecutar la consulta

        Transaction transaction = null;
    transaction = session.begintransaction();
    ...
    transaction.commit();

    OriginalEl autor dungth4

Dejar respuesta

Please enter your comment!
Please enter your name here