@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.