Module io.ebean.api
Package io.ebean

Class Finder<I,T>


@NonNullApi public class Finder<I,T> extends Object
Intended to be used as a base class for 'Finder' implementations that can then be injected or used as public static fields on the associated entity bean.

These 'finders' are a place to organise all the finder methods for that bean type and specific finder methods are expected to be added (find by unique properties etc).


For testing the mocki-ebean project has the ability to replace the finder implementation.

 public class CustomerFinder extends Finder<Long,Customer> {

   public CustomerFinder() {

   // Add finder methods ...

   public Customer byName(String name) {
     return query().eq("name", name).findOne();

   public List<Customer> findNew() {
     return query().where()
       .eq("status", Customer.Status.NEW)

 public class Customer extends BaseModel {

   public static final CustomerFinder find = new CustomerFinder();


When the Finder is registered as a field on Customer it can then be used like:

   Customer rob = Customer.find.byName("Rob");

  • Constructor Details

    • Finder

      public Finder(Class<T> type)
      Create with the type of the entity bean.
       public class CustomerFinder extends Finder<Customer> {
         public CustomerFinder() {
         // ... add extra customer specific finder methods
       public class Customer extends BaseModel {
         public static final CustomerFinder find = new CustomerFinder();
    • Finder

      public Finder(Class<T> type, String databaseName)
      Create with the type of the entity bean and specific database name.
  • Method Details

    • currentTransaction

      public Transaction currentTransaction()
      Return the current transaction.
    • flush

      public void flush()
      Flush the JDBC batch on the current transaction.
    • db

      public Database db()
      Return the Database this finder will use.
    • db

      public Database db(String databaseName)
      Return typically a different Database to the default.

      This is equivalent to DB.byName(String)

      databaseName - The name of the Database. If this is null then the default database is returned.
    • ref

      public T ref(I id)
      Creates an entity reference for this ID.

      Equivalent to Database.reference(Class, Object)

    • byId

      @Nullable public T byId(I id)
      Retrieves an entity by ID.

      Equivalent to Database.find(Class, Object)

    • deleteById

      public void deleteById(I id)
      Delete a bean by Id.

      Equivalent to Database.delete(Class, Object)

    • all

      public List<T> all()
      Retrieves all entities of the given type.
    • update

      public UpdateQuery<T> update()
      Creates an update query.
        int rows =
            .set("status", Customer.Status.ACTIVE)
            .set("updtime", new Timestamp(System.currentTimeMillis()))
              .gt("id", 1000)

      Equivalent to Database.update(Class)

    • query

      public Query<T> query()
      Creates a query.

      Equivalent to Database.find(Class)

    • nativeSql

      public Query<T> nativeSql(String nativeSql)
      Creates a native sql query.
    • query

      public Query<T> query(String ormQuery)
      Creates a query using the ORM query language.