31.6.3. Overriding the EJB-QL to SQL Mapping

The EJB-QL query can be overridden in the jbosscmp-jdbc.xml file. The finder or select is still required to have an EJB-QL declaration, but the ejb-ql element can be left empty. Currently the SQL can be overridden with JBossQL, DynamicQL, DeclaredSQL or a BMP style custom ejbFind method. All EJB-QL overrides are non-standard extensions to the EJB specification, so use of these extensions will limit portability of your application. All of the EJB-QL overrides, except for BMP custom finders, are declared using a query element in the jbosscmp-jdbc.xml file. The content model is shown in Figure 31.11, “The jbosscmp-jdbc query element content model”.
The jbosscmp-jdbc query element content model

Figure 31.11. The jbosscmp-jdbc query element content model

  • description: An optional description for the query.
  • query-method: This required element specifies the query method that being configured. This must match a query-method declared for this entity in the ejb-jar.xml file.
  • jboss-ql: This is a JBossQL query to use in place of the EJB-QL query. JBossQL is discussed in Section 31.6.4, “JBossQL”.
  • dynamic-ql: This indicated that the method is a dynamic query method and not an EJB-QL query. Dynamic queries are discussed in Section 31.6.5, “DynamicQL”.
  • declared-sql: This query uses declared SQL in place of the EJB-QL query. Declared SQL is discussed in Section 31.6.6, “DeclaredSQL”.
  • read-ahead: This optional element allows one to optimize the loading of additional fields for use with the entities referenced by the query. This is discussed in detail in Section 31.7, “Optimized Loading”.