@Target(value=METHOD) @Retention(value=RUNTIME) public @interface SetEntity
Dao
method that fills a core driver data structure from an instance of an
Entity
class.
Example:
public interface ProductDao { @SetEntity BoundStatement bind(Product product, BoundStatement boundStatement); }The generated code will set each entity property on the target, such as:
boundStatement = boundStatement.set("id", product.getId(), UUID.class); boundStatement = boundStatement.set("description", product.getDescription(), String.class); ...It does not perform a query. Instead, those methods are intended for cases where you will execute the query yourself, and just need the conversion logic.
SettableByName
(the most likely candidates are BoundStatement
, BoundStatementBuilder
and UdtValue
). Note that you can't use SettableByName
itself.
The order of the parameters does not matter.
@SetEntity void bind(Product product, UdtValue udtValue); @SetEntity void bind(Product product, BoundStatementBuilder builder);Note that if the settable parameter is immutable, the method should return a new instance, because the generated code won't be able to modify the argument in place. This is the case for
BoundStatement
, which is immutable in the driver:
// Wrong: statement won't be modified @SetEntity void bind(Product product, BoundStatement statement); // Do this instead: @SetEntity BoundStatement bind(Product product, BoundStatement statement);If you use a void method with
BoundStatement
, the mapper processor will issue a
compile-time warning.Modifier and Type | Optional Element and Description |
---|---|
boolean |
lenient
Whether to tolerate missing columns in the target data structure.
|
NullSavingStrategy |
nullSavingStrategy
How to handle null entity properties.
|
public abstract NullSavingStrategy nullSavingStrategy
This defaults either to the DAO-level strategy
(if set),
or NullSavingStrategy.DO_NOT_SET
.
public abstract boolean lenient
If false
(the default), then the target must contain a matching column for every
property in the entity definition, except computed ones. If such a column is not
found, an IllegalArgumentException
will be thrown.
If true
, the mapper will operate on a best-effort basis and attempt to write all
entity properties that have a matching column in the target, leaving unmatched properties
untouched. Beware that this may result in a partially-populated target.
Copyright © 2017–2023. All rights reserved.