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.

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

 
  • 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.
    • query

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