All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.avaje.ebean.UpdateQuery Maven / Gradle / Ivy

There is a newer version: 8.1.1
Show newest version
package com.avaje.ebean;

/**
 * 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 {@link 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 * {@link ExpressionList} "Criteria API" that is used with a normal ORM query. *

* *

Example: Simple update

* *
{@code
 *
 *  int rows = ebeanServer
 *      .update(Customer.class)
 *      .set("status", Customer.Status.ACTIVE)
 *      .set("updtime", new Timestamp(System.currentTimeMillis()))
 *      .where()
 *      .gt("id", 1000)
 *      .update();
 *
 * }
*
{@code 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. *

* *
{@code
 *
 *   int rows = ebeanServer
 *       .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();
 * }
* *
{@code sql
 *
 *   update o_customer set status=?, updtime=?
 *   where id in (
 *     select t0.id c0
 *     from o_customer t0
 *     left outer join o_address t1 on t1.id = t0.billing_address_id
 *     where t0.status = ?
 *       and t1.country_code = ?
 *       and t0.id > ? )
 *
 * }
* * @param The type of entity bean being updated * * @see SqlUpdate */ public interface UpdateQuery { /** * Set the value of a property. * * *
{@code
   *
   *   int rows = ebeanServer
   *      .update(Customer.class)
   *      .set("status", Customer.Status.ACTIVE)
   *      .set("updtime", new Timestamp(System.currentTimeMillis()))
   *      .where()
   *      .gt("id", 1000)
   *      .update();
   *
   * }
* * @param property The bean property to be set * @param value The value to set the property to */ UpdateQuery set(String property, Object value); /** * Set the property to be null. * *
{@code
   *
   *   int rows = ebeanServer
   *      .update(Customer.class)
   *      .setNull("notes")
   *      .where()
   *      .gt("id", 1000)
   *      .update();
   *
   * }
* * @param property The property to be set to null. */ UpdateQuery setNull(String property); /** * * Set using a property expression that does not need any bind values. *

* The property expression typically contains database functions. *

* *
{@code
   *
   *   int rows = ebeanServer
   *      .update(Customer.class)
   *      .setRaw("status = coalesce(status, 'A')")
   *      .where()
   *      .gt("id", 1000)
   *      .update();
   *
   * }
* * @param propertyExpression A property expression */ UpdateQuery setRaw(String propertyExpression); /** * 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. *

*
{@code
   *
   *   int rows = ebeanServer
   *      .update(Customer.class)
   *      .setRaw("status = coalesce(status, ?)", Customer.Status.ACTIVE)
   *      .where()
   *      .gt("id", 1000)
   *      .update();
   *
   * }
* * @param propertyExpression A raw property expression * @param values The values to bind with the property expression */ UpdateQuery setRaw(String propertyExpression, Object... values); /** * Return the query expression list to add predicates to. */ ExpressionList where(); }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy