For those interested in using SapDB, here is code for JDBCSapDBCreateCommand.java, I can also send the ddl for nukes if any body is interested
package org.jboss.ejb.plugins.cmp.jdbc.keygen; import java.sql.PreparedStatement; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import javax.ejb.EJBException; import org.jboss.ejb.plugins.cmp.jdbc.JDBCIdentityColumnCreateCommand; import org.jboss.ejb.plugins.cmp.jdbc.SQLUtil; import org.jboss.ejb.plugins.cmp.jdbc.JDBCUtil; import org.jboss.ejb.plugins.cmp.jdbc.JDBCStoreManager; import org.jboss.ejb.plugins.cmp.jdbc.metadata.JDBCEntityCommandMetaData; import org.jboss.ejb.EntityEnterpriseContext; import org.jboss.deployment.DeploymentException; /** * Create command for use with SapDB, it that uses a sequence * and uses sequence.CURRVAL to return the generated pk value * * @author Tosin Faleye * */ public class JDBCSapDBCreateCommand extends JDBCIdentityColumnCreateCommand { private String sequence; private int pkIndex; private int jdbcType; public void init(JDBCStoreManager manager) throws DeploymentException { super.init(manager); } protected void initEntityCommand(JDBCEntityCommandMetaData entityCommand) throws DeploymentException { super.initEntityCommand(entityCommand); sequence = entityCommand.getAttribute("sequence"); if (sequence == null) { throw new DeploymentException("Sequence must be specified"); } else{ //SELECT SEQUENCE_NAME.CURRVAL AS CURRENT_VAL FROM DUAL pkSQL = "SELECT " + sequence+".CURRVAL AS CURRENT_VAL FROM DUAL"; } } protected void initInsertSQL() { pkIndex = 1 + insertFields.length; jdbcType = pkField.getJDBCType().getJDBCTypes()[0]; StringBuffer sql = new StringBuffer(); sql.append("INSERT INTO ").append(entity.getTableName()); sql.append(" ("); SQLUtil.getColumnNamesClause(pkField, sql) .append(", "); SQLUtil.getColumnNamesClause(insertFields, sql); sql.append(")"); sql.append(" VALUES ("); sql.append(sequence+".NEXTVAL, "); SQLUtil.getValuesClause(insertFields, sql); sql.append(")"); insertSQL = sql.toString(); if (debug) { log.debug("Insert Entity SQL: " + insertSQL); } } protected PreparedStatement prepareStatement(Connection c, String sql, EntityEnterpriseContext ctx) throws SQLException { return c.prepareCall(sql); } protected int executeInsert(PreparedStatement ps, EntityEnterpriseContext ctx) throws SQLException { int rows = ps.executeUpdate(); Connection c; Statement s = null; ResultSet rs = null; try { c = ps.getConnection(); s = c.createStatement(); rs = s.executeQuery(pkSQL); if (!rs.next()) { throw new EJBException("ResultSet was empty"); } pkField.loadInstanceResults(rs, 1, ctx); } catch (RuntimeException e) { throw e; } catch (Exception e) { // throw EJBException to force a rollback as the row has been inserted throw new EJBException("Error extracting generated key", e); } finally { JDBCUtil.safeClose(rs); JDBCUtil.safeClose(s); } return rows; } } View the original post : http://www.jboss.org/index.html?module=bb&op=viewtopic&p=3848626#3848626 Reply to the post : http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=3848626 ------------------------------------------------------- This SF.Net email is sponsored by: YOU BE THE JUDGE. Be one of 170 Project Admins to receive an Apple iPod Mini FREE for your judgement on who ports your project to Linux PPC the best. Sponsored by IBM. Deadline: Sept. 24. Go here: http://sf.net/ppc_contest.php _______________________________________________ JBoss-Development mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/jboss-development