Was this page helpful?
ScyllaDB Java Driver is available under the Apache v2 License. ScyllaDB Java Driver is a fork of DataStax Java Driver. See Copyright here.
Caution
You're viewing documentation for a previous version of Scylla Java Driver. Switch to the latest stable version.
Annotate a DAO method with @Insert to generate a query that inserts an Entity:
@Dao
public interface ProductDao {
@Insert
void insert(Product product);
}
The first parameter must be the entity to insert.
If the annotation defines a TTL and/or timestamp with placeholders, the method must have corresponding additional parameters (same name, and a compatible Java type):
@Insert(ttl = ":ttl")
void insertWithTtl(Product product, int ttl);
The annotation can define a null saving strategy that applies to the properties of the entity to insert.
A Function<BoundStatementBuilder, BoundStatementBuilder>
or UnaryOperator<BoundStatementBuilder>
can be added as the last parameter. It will be applied to the statement before execution. This
allows you to customize certain aspects of the request (page size, timeout, etc) at runtime. See
statement attributes.
The method can return:
void
.
the entity class. This is intended for INSERT ... IF NOT EXISTS
queries. The method will return
null
if the insertion succeeded, or the existing entity if it failed.
@Insert(ifNotExists = true)
Product insertIfNotExists(Product product);
an Optional of the entity class, as a null-safe alternative for INSERT ... IF NOT EXISTS
queries.
@Insert(ifNotExists = true)
Optional<Product> insertIfNotExists(Product product);
a boolean
or Boolean
, which will be mapped to ResultSet#wasApplied(). This is intended for
IF NOT EXISTS queries:
/** @return true if the product did not exist */
@Insert(ifNotExists = true)
boolean saveIfNotExists(Product product);
a ResultSet. This is intended for cases where you intend to inspect data associated with the result, such as ResultSet#getExecutionInfo():
@Insert
ResultSet save(Product product);
a BoundStatement. This is intended for cases where you intend to execute this statement later or in a batch:
@Insert
BoundStatement save(Product product);
a CompletionStage or CompletableFuture of any of the above. The mapper will execute the query asynchronously.
@Insert
CompletionStage<Void> insert(Product product);
@Insert(ifNotExists = true)
CompletableFuture<Product> insertIfNotExists(Product product);
@Insert(ifNotExists = true)
CompletableFuture<Optional<Product>> insertIfNotExists(Product product);
@Insert
ReactiveResultSet insertReactive(Product product);
a custom type.
If a keyspace was specified when creating the DAO, then the generated query targets that keyspace. Otherwise, it doesn’t specify a keyspace, and will only work if the mapper was built from a session that has a default keyspace set.
If a table was specified when creating the DAO, then the generated query targets that table. Otherwise, it uses the default table name for the entity (which is determined by the name of the entity class and the naming strategy).
Was this page helpful?
ScyllaDB Java Driver is available under the Apache v2 License. ScyllaDB Java Driver is a fork of DataStax Java Driver. See Copyright here.