31.6. Queries
Entity beans allow for two types of queries: finders and selects. A finder provides queries on an entity bean to clients of the bean. The select method is designed to provide private query statements to an entity implementation. Unlike finders, which are restricted to only return entities of the same type as the home interface on which they are defined, select methods can return any entity type or just one field of the entity. EJB-QL is the query language used to specify finders and select methods in a platform independent way.
31.6.1. Finder and select Declaration
The declaration of finders has not changed in CMP 2.0. Finders are still declared in the home interface (local or remote) of the entity. Finders defined on the local home interface do not throw a RemoteException. The following code declares the
findBadDudes_ejbql
finder on the GangsterHome
interface. The ejbql
suffix here is not required. It is simply a naming convention used here to differentiate the different types of query specifications we will be looking at.
public interface GangsterHome extends EJBLocalHome { Collection findBadDudes_ejbql(int badness) throws FinderException; }
Select methods are declared in the entity implementation class, and must be public and abstract just like CMP and CMR field abstract accessors and must throw a
FinderException
. The following code declares an select method:
public abstract class GangsterBean implements EntityBean { public abstract Set ejbSelectBoss_ejbql(String name) throws FinderException; }