Hi!
Problems occurred when using feature automatically creating
findBy...-Methods with nested fields!
JDBCFindByCommand-constructor could not recognize cmp-fields which are
nested in data objects.
Following small JDBCFindByCommand-constructor patch works fine:
public JDBCFindByCommand(JDBCCommandFactory factory, Method finderMethod)
throws IllegalArgumentException
{
super(factory, finderMethod.getName());
String cmpFieldName = finderMethod.getName().substring(6).toLowerCase();
Logger.debug("Finder:"+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();
<patch>
// pay attention when working with nested fields
// ergo, only compare lastComponent of fieldName
// if there is no nested field, there should also be
no conflict by comparing
// it this way, because getLastComponent() returns the
// parameter untouched
if
(cmpFieldName.equals(CMPFieldMetaData.getLastComponent(fi.getName()).toLowerCase()))
cmpField = fi;
}
</patch>
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);
}
Can this be added to repository because nested field support was
also added and this would be a step to completion of nested field
support (and I do not have to change it again if there will be - I
hope there will be ;) - future releases of jBoss)
Thanx
--
Torben Jäger
Orientation in Objects GmbH
http://www.oio.de
<< life is short - code hard >>
_______________________________________________
Jboss-development mailing list
[EMAIL PROTECTED]
http://lists.sourceforge.net/lists/listinfo/jboss-development