/** For non batch insert with generated keys. */ private void getGeneratedKeys() throws SQLException { ResultSet rset = dataBind.getPstmt().getGeneratedKeys(); try { if (rset.next()) { Object idValue = rset.getObject(1); if (idValue != null) { persistRequest.setGeneratedKey(idValue); } } else { throw new PersistenceException(Message.msg("persist.autoinc.norows")); } } finally { try { rset.close(); } catch (SQLException ex) { String msg = "Error closing rset for returning generatedKeys?"; logger.warn(msg, ex); } } }
/** Create the appropriate properties for a bean. */ public void createProperties(DeployBeanDescriptor<?> desc) { createProperties(desc, desc.getBeanType(), 0); desc.sortProperties(); // check the transient properties... Iterator<DeployBeanProperty> it = desc.propertiesAll(); while (it.hasNext()) { DeployBeanProperty prop = it.next(); if (prop.isTransient()) { if (prop.getWriteMethod() == null || prop.getReadMethod() == null) { // Typically a helper method ... this is expected logger.finest("... transient: " + prop.getFullBeanName()); } else { // dubious, possible error... String msg = Message.msg("deploy.property.nofield", desc.getFullName(), prop.getName()); logger.warning(msg); } } } }
/** * For non batch insert with DBs that do not support getGeneratedKeys. Use a SQL select to fetch * back the Id value. */ private void fetchGeneratedKeyUsingSelect() throws SQLException { Connection conn = transaction.getConnection(); PreparedStatement stmt = null; ResultSet rset = null; try { stmt = conn.prepareStatement(selectLastInsertedId); rset = stmt.executeQuery(); if (rset.next()) { Object idValue = rset.getObject(1); if (idValue != null) { persistRequest.setGeneratedKey(idValue); } } else { throw new PersistenceException(Message.msg("persist.autoinc.norows")); } } finally { try { if (rset != null) { rset.close(); } } catch (SQLException ex) { String msg = "Error closing rset for fetchGeneratedKeyUsingSelect?"; logger.warn(msg, ex); } try { if (stmt != null) { stmt.close(); } } catch (SQLException ex) { String msg = "Error closing stmt for fetchGeneratedKeyUsingSelect?"; logger.warn(msg, ex); } } }