com.avaje.ebean.Update Maven / Gradle / Ivy
package com.avaje.ebean;
/**
* An Insert Update or Delete statement.
*
* Generally a named update will be defined on the entity bean. This will take
* the form of either an actual sql insert update delete statement or a similar
* statement with bean name and property names in place of database table and
* column names. The statement will likely include named parameters.
*
*
* The following is an example of named updates on an entity bean.
*
*
*
* ...
* @NamedUpdates(value = {
* @NamedUpdate(
* name = "setTitle",
* notifyCache = false,
* update = "update topic set title = :title, postCount = :count where id = :id"),
* @NamedUpdate(
* name = "setPostCount",
* notifyCache = false,
* update = "update f_topic set post_count = :postCount where id = :id"),
* @NamedUpdate(
* name = "incrementPostCount",
* notifyCache = false,
* update = "update Topic set postCount = postCount + 1 where id = :id")
* //update = "update f_topic set post_count = post_count + 1 where id = :id")
* })
* @Entity
* @Table(name = "f_topic")
* public class Topic {
* ...
*
*
*
* The following show code that would use a named update on the Topic entity
* bean.
*
*
*
* Update<Topic> update = Ebean.createUpdate(Topic.class, "incrementPostCount");
* update.setParameter("id", 1);
* int rows = update.execute();
*
*
* @param
* the type of entity beans inserted updated or deleted
*/
public interface Update {
/**
* Return the name if it is a named update.
*/
String getName();
/**
* Set this to false if you do not want the cache to invalidate related
* objects.
*
* If you don't set this Ebean will automatically invalidate the appropriate
* parts of the "L2" server cache.
*
*/
Update setNotifyCache(boolean notifyCache);
/**
* Set a timeout for statement execution.
*
* This will typically result in a call to setQueryTimeout() on a
* preparedStatement. If the timeout occurs an exception will be thrown - this
* will be a SQLException wrapped up in a PersistenceException.
*
*
* @param secs
* the timeout in seconds. Zero implies unlimited.
*/
Update setTimeout(int secs);
/**
* Execute the statement returning the number of rows modified.
*/
int execute();
/**
* Set an ordered bind parameter.
*
* position starts at value 1 (not 0) to be consistent with PreparedStatement.
*
*
* Set a value for each ? you have in the sql.
*
*
* @param position
* the index position of the parameter starting with 1.
* @param value
* the parameter value to bind.
*/
Update set(int position, Object value);
/**
* Set and ordered bind parameter (same as bind).
*
* @param position
* the index position of the parameter starting with 1.
* @param value
* the parameter value to bind.
*/
Update setParameter(int position, Object value);
/**
* Set an ordered parameter that is null. The JDBC type of the null must be
* specified.
*
* position starts at value 1 (not 0) to be consistent with PreparedStatement.
*
*/
Update setNull(int position, int jdbcType);
/**
* Set an ordered parameter that is null (same as bind).
*/
Update setNullParameter(int position, int jdbcType);
/**
* Set a named parameter. Named parameters have a colon to prefix the name.
*
* A more succinct version of setParameter() to be consistent with Query.
*
*
* @param name
* the parameter name.
* @param value
* the parameter value.
*/
Update set(String name, Object value);
/**
* Bind a named parameter (same as bind).
*/
Update setParameter(String name, Object param);
/**
* Set a named parameter that is null. The JDBC type of the null must be
* specified.
*
* A more succinct version of setNullParameter().
*
*
* @param name
* the parameter name.
* @param jdbcType
* the type of the property being bound.
*/
Update setNull(String name, int jdbcType);
/**
* Bind a named parameter that is null (same as bind).
*/
Update setNullParameter(String name, int jdbcType);
/**
* Return the sql that is actually executed.
*/
String getGeneratedSql();
}