Ok,
I've changed the JDBCCreateEntityCommand as
public JDBCCreateEntityCommand(JDBCCommandFactory factory)
{
super(factory, "Create");
beanExistsCommand = factory.createBeanExistsCommand();
// Insert SQL
String sql = "INSERT INTO " + jawsEntity.getTableName();
String fieldSql = "";
String valueSql = "";
Iterator it = jawsEntity.getCMPFields();
boolean first = true;
//Added by Vinay - Start
String rowIDColumn = jawsEntity.getRowIDColumnName();
if(rowIDColumn==null) rowIDColumn = "";
while (it.hasNext())
{
CMPFieldMetaData cmpField = (CMPFieldMetaData)it.next();
if(!cmpField.getColumnName().equalsIgnoreCase(rowIDColumn))
{
fieldSql += (first ? "" : ",") +
cmpField.getColumnName();
valueSql += first ? "?" : ",?";
first = false;
}
}
sql += " ("+fieldSql+") VALUES ("+valueSql+")";
setSQL(sql);
}
and
protected void setParameters(PreparedStatement stmt, Object argOrArgs)
throws Exception
{
EntityEnterpriseContext ctx = (EntityEnterpriseContext)argOrArgs;
int idx = 1; // Parameter-index
Iterator iter = jawsEntity.getCMPFields();
String rowIDColumn = jawsEntity.getRowIDColumnName();
if(rowIDColumn==null) rowIDColumn = "";
while (iter.hasNext())
{
CMPFieldMetaData cmpField = (CMPFieldMetaData)iter.next();
if(!cmpField.getColumnName().equalsIgnoreCase(rowIDColumn))
{
Object value = getCMPFieldValue(ctx.getInstance(), cmpField);
setParameter(stmt, idx++, cmpField.getJDBCType(), value);
}
}
}
Now in my client code I have done something like
cl.addItemizedCall(callItem); //does the insert
calls =
cl.getAllItemizedCalls("999999","07947018717","5050505050");
I *DO* get the row ID. I believe some things have changed in
Oracle 817 and perhaps this is one of them but I do get the ROWID
automatically without *any* additional code in the ejbPostCreate Method.
Vinay
_______________________________________________
Jboss-development mailing list
[EMAIL PROTECTED]
http://lists.sourceforge.net/lists/listinfo/jboss-development