GetEntity methods

Annotate a DAO method with @GetEntity to convert a core driver data structure into one or more Entities:

@Dao
public interface ProductDao {
  @GetEntity
  Product asProduct(Row row);
}

The generated code will retrieve each entity property from the source, such as:

Product product = new Product();
product.setId(row.get("id", UUID.class));
product.setDescription(row.get("description", String.class));
...

It does not perform a query. Instead, those methods are intended for cases where you already have a query result, and just need the conversion logic.

Parameters

The method must have a single parameter. The following types are allowed:

The data must match the target entity: the generated code will try to extract every mapped property, and fail if one is missing.

Return type

The method can return:

  • a single entity instance. If the argument is a result set type, the generated code will extract the first row and convert it, or return null if the result set is empty.

    @GetEntity
    Product asProduct(Row row);
    
    @GetEntity
    Product firstRowAsProduct(ResultSet resultSet);
    
  • a PagingIterable of an entity class. In that case, the type of the parameter must be ResultSet. Each row in the result set will be converted into an entity instance.

    @GetEntity
    PagingIterable<Product> asProducts(ResultSet resultSet);
    
  • a Stream of an entity class. In that case, the type of the parameter must be ResultSet. Each row in the result set will be converted into an entity instance.

    Note: even if streams are lazily evaluated, results are fetched synchronously; therefore, as the returned stream is traversed, blocking calls may occur, as more results are fetched from the server in the background. For details about the stream’s characteristics, see PagingIterable.spliterator.

    @GetEntity
    Stream<Product> asProducts(ResultSet resultSet);
    
  • a MappedAsyncPagingIterable of an entity class. In that case, the type of the parameter must be AsyncResultSet. Each row in the result set will be converted into an entity instance.

    @GetEntity
    MappedAsyncPagingIterable<Product> asProducts(AsyncResultSet resultSet);
    

If the return type doesn’t match the parameter type (for example PagingIterable for AsyncResultSet), the mapper processor will issue a compile-time error.