User: dsundstrom
Date: 02/01/15 13:47:10
Modified: src/main/org/jboss/ejb/plugins/cmp/jdbc
JDBCDeclaredSQLQuery.java
Log:
Added support for read-ahead on-find.
Revision Changes Path
1.2 +27 -8
jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/JDBCDeclaredSQLQuery.java
Index: JDBCDeclaredSQLQuery.java
===================================================================
RCS file:
/cvsroot/jboss/jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/JDBCDeclaredSQLQuery.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- JDBCDeclaredSQLQuery.java 2001/11/28 11:32:54 1.1
+++ JDBCDeclaredSQLQuery.java 2002/01/15 21:47:10 1.2
@@ -7,6 +7,9 @@
package org.jboss.ejb.plugins.cmp.jdbc;
+import java.util.ArrayList;
+import java.util.List;
+
import org.jboss.deployment.DeploymentException;
import org.jboss.ejb.Container;
@@ -16,6 +19,7 @@
import org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMPFieldBridge;
import org.jboss.ejb.plugins.cmp.jdbc.metadata.JDBCQueryMetaData;
import org.jboss.ejb.plugins.cmp.jdbc.metadata.JDBCDeclaredQueryMetaData;
+import org.jboss.ejb.plugins.cmp.jdbc.metadata.JDBCReadAheadMetaData;
/**
* This class generates a query based on the delcared-sql xml specification.
@@ -27,7 +31,7 @@
* @author <a href="mailto:[EMAIL PROTECTED]">Justin Forder</a>
* @author <a href="mailto:[EMAIL PROTECTED]">Michel de Groot</a>
* @author <a href="[EMAIL PROTECTED]">danch (Dan Christopherson</a>
- * @version $Revision: 1.1 $
+ * @version $Revision: 1.2 $
*/
public class JDBCDeclaredSQLQuery extends JDBCAbstractQueryCommand {
@@ -44,10 +48,18 @@
metadata = (JDBCDeclaredQueryMetaData) q;
+ // set the select object (either selectEntity or selectField)
initSelectObject(manager);
- String sql = buildSQL();
+ // set the preload fields
+ JDBCReadAheadMetaData readAhead = metadata.getReadAhead();
+ if(getSelectEntity() != null && !readAhead.isOnFind()) {
+ String eagerLoadGroupName = readAhead.getEagerLoadGroup();
+ setPreloadFields(getSelectEntity().getLoadGroup(eagerLoadGroupName));
+ }
+ // set the sql and parameters
+ String sql = buildSQL();
setSQL(parseParameters(sql));
}
@@ -120,18 +132,25 @@
String from = metadata.getFrom();
if(getSelectField() == null) {
- JDBCEntityBridge selectEntity = getSelectEntity();
- String table = selectEntity.getMetaData().getTableName();
+
+ // we are selecting a full entity
+ String table = getSelectEntity().getMetaData().getTableName();
+
+ // get a list of all fields to be loaded
+ List loadFields = new ArrayList();
+ loadFields.addAll(getSelectEntity().getPrimaryKeyFields());
+ loadFields.addAll(getPreloadFields());
+
if(from != null && from.trim().length()>0) {
- sql.append(SQLUtil.getColumnNamesClause(
- selectEntity.getJDBCPrimaryKeyFields(), table));
+ sql.append(SQLUtil.getColumnNamesClause(loadFields, table));
sql.append(" FROM ").append(table).append(" ").append(from);
} else {
- sql.append(SQLUtil.getColumnNamesClause(
- selectEntity.getJDBCPrimaryKeyFields()));
+ sql.append(SQLUtil.getColumnNamesClause(loadFields));
sql.append(" FROM ").append(table);
}
} else {
+
+ // we are just selecting one field
JDBCCMPFieldBridge selectField = getSelectField();
String table = selectField.getMetaData().getEntity().getTableName();
if(from != null && from.trim().length()>0) {
_______________________________________________
Jboss-development mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-development