public JDBCFindByCommand(JDBCCommandFactory factory,
Method finderMethod,
FinderMetaData md) throws IllegalArgumentException {
// Constructors --------------------------------------------------
super(factory, md);
String cmpFieldName = finderMethod.getName().substring(6).toLowerCase();
if (log.isDebugEnabled()) {
log.debug("cmp field name: " + cmpFieldName);
}
// Find the meta-info for the field we want to find by
cmpField = null;
Iterator iter = jawsEntity.getCMPFields();
while (cmpField == null && iter.hasNext())
{
CMPFieldMetaData fi = (CMPFieldMetaData)iter.next();
String lastComponentOfName =
CMPFieldMetaData.getLastComponent(fi.getName()).toLowerCase();
if (cmpFieldName.equals(lastComponentOfName))
{
cmpField = fi;
}
}
if (cmpField == null)
{
throw new IllegalArgumentException(
"No finder for this method: " + finderMethod.getName());
}
// Compute SQL
String sql = "SELECT " + getPkColumnList() +
" FROM "+jawsEntity.getTableName()+ " WHERE ";
sql += cmpField.getColumnName() + "=?";
setSQL(sql);
}
|