Module io.ebean.api
Package io.ebean

Class Finder<I,T>

java.lang.Object
io.ebean.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.

When using dependency injection BeanRepository and BeanFinder are expected to be used rather than this Finder.

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

Testing

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



 public class CustomerFinder extends Finder<Long,Customer> {

   public CustomerFinder() {
     super(Customer.class);
   }

   // 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)
       .order("name")
       .findList()
   }
 }

 @Entity
 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");

 
See Also:
  • Constructor Details

    • Finder

      public Finder(Class<T> type)
      Create with the type of the entity bean.
      
      
       public class CustomerFinder extends Finder<Customer> {
      
         public CustomerFinder() {
           super(Customer.class);
         }
      
         // ... add extra customer specific finder methods
       }
      
       @Entity
       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)

      Parameters:
      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 =
            finder.update()
            .set("status", Customer.Status.ACTIVE)
            .set("updtime", new Timestamp(System.currentTimeMillis()))
            .where()
              .gt("id", 1000)
              .update();
      
       

      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.