Package io.ebean

Interface UpdateQuery<T>

  • Type Parameters:
    T - The type of entity bean being updated

    public interface UpdateQuery<T>
    An update query typically intended to perform a bulk update of many rows that match the query.

    Also note that you can also just use a raw SQL update via SqlUpdate which is pretty light and simple. This UpdateQuery is more for the cases where we want to build the where expression of the update using the ExpressionList "Criteria API" that is used with a normal ORM query.

    Example: Simple update

    
    
      int rows = DB.update(Customer.class)
          .set("status", Customer.Status.ACTIVE)
          .set("updtime", new Timestamp(System.currentTimeMillis()))
          .where()
          .gt("id", 1000)
          .update();
    
     
    sql
    
       update o_customer set status=?, updtime=? where id > ?
    
     

    Note that if the where() clause contains a join then the SQL update changes to use a WHERE ID IN () form.

    Example: Update with a JOIN

    In this example the expression .eq("billingAddress.country", nz) requires a join to the address table.

    
    
       int rows = DB.update(Customer.class)
           .set("status", Customer.Status.ACTIVE)
           .set("updtime", new Timestamp(System.currentTimeMillis()))
           .where()
             .eq("status", Customer.Status.NEW)
             .eq("billingAddress.country", nz)
             .gt("id", 1000)
             .update();
     

    sql
    
       update o_customer set status=?, updtime=?
       where id in (
         select t0.id c0
         from o_customer t0
         left join o_address t1 on t1.id = t0.billing_address_id
         where t0.status = ?
           and t1.country_code = ?
           and t0.id > ? )
    
     
    See Also:
    SqlUpdate
    • Method Detail

      • set

        UpdateQuery<Tset​(String property,
                           Object value)
        Set the value of a property.

        
        
           int rows = DB.update(Customer.class)
              .set("status", Customer.Status.ACTIVE)
              .set("updtime", new Timestamp(System.currentTimeMillis()))
              .where()
              .gt("id", 1000)
              .update();
        
         
        Parameters:
        property - The bean property to be set
        value - The value to set the property to
      • setNull

        UpdateQuery<TsetNull​(String property)
        Set the property to be null.

        
        
           int rows = DB.update(Customer.class)
              .setNull("notes")
              .where()
              .gt("id", 1000)
              .update();
        
         
        Parameters:
        property - The property to be set to null.
      • setRaw

        UpdateQuery<TsetRaw​(String propertyExpression)
        Set using a property expression that does not need any bind values.

        The property expression typically contains database functions.

        
        
           int rows = DB.update(Customer.class)
              .setRaw("status = coalesce(status, 'A')")
              .where()
              .gt("id", 1000)
              .update();
        
         
        Parameters:
        propertyExpression - A property expression
      • setRaw

        UpdateQuery<TsetRaw​(String propertyExpression,
                              Object... values)
        Set using a property expression that can contain ? bind value placeholders.

        For each ? in the property expression there should be a matching bind value supplied.

        
        
           int rows = DB.update(Customer.class)
              .setRaw("status = coalesce(status, ?)", Customer.Status.ACTIVE)
              .where()
              .gt("id", 1000)
              .update();
        
         
        Parameters:
        propertyExpression - A raw property expression
        values - The values to bind with the property expression
      • setProfileLocation

        UpdateQuery<TsetProfileLocation​(ProfileLocation profileLocation)
        Set the profile location of this update query. This is used to relate query execution metrics back to a location like a specific line of code.
      • update

        int update()
        Execute the update returning the number of rows updated.