private BEAN save(final BEAN bean) { final Persistor<BEAN> persistor = ormClassTool.getPersistor(); final SqlExecutor sqlExec = serviceCatalog.getSession().sqlExecutor(); //CHECK IF OBJECT HAS A 'VERSION' FIELD and increase it persistor.increaseVersion(bean, true); boolean useGenerator = ormClassTool.getPersistor().useGenerators(bean); String sql = getQuery(useGenerator); if (!useGenerator) { String[] keys = ormClassTool.getDescriptor().getAllColumnJavaNames(); Object[] values = persistor.getPropertyValues(keys, bean); sqlExec.update(sql, values); } else { final GeneratedKeyReader generatedKeyExtractor = new GeneratedKeyReader() { @Override public void read(final ResultSet generatedKeyResultSet) throws SQLException { if (generatedKeyResultSet.next()) { persistor.updateGeneratedValues(generatedKeyResultSet, bean); } } @Override public String[] generatedColumnNames() { return ormClassTool.getDescriptor().getAllGeneratedColumnDBNames(); } }; String[] keys = ormClassTool.getDescriptor().getAllNotGeneratedColumnJavaNames(); Object[] values = persistor.getPropertyValues(keys, bean); sqlExec.update(sql, generatedKeyExtractor, values); } return bean; }
private BEAN save(final BEAN bean) { final Persistor<BEAN> persistor = ormClassTool.getPersistor(); // CHECK IF OBJECT HAS A 'VERSION' FIELD and increase it final BEAN updatedBean = persistor.increaseVersion(bean, true); final boolean useGenerator = ormClassTool.getPersistor().useGenerators(updatedBean); final String sql = getCacheableQuery(useGenerator); if (!useGenerator) { final String[] keys = ormClassTool.getDescriptor().getAllColumnJavaNames(); sqlExecutor.update(sql, statement -> persistor.setBeanValuesToStatement(keys, updatedBean, statement, 0)); return updatedBean; } else { final GeneratedKeyReader<BEAN> generatedKeyExtractor = GeneratedKeyReader.get(ormClassTool.getDescriptor().getAllGeneratedColumnDBNames(), (final ResultSet generatedKeyResultSet, Integer affectedRows) -> { BEAN result = updatedBean; if (generatedKeyResultSet.hasNext()) { result = persistor.updateGeneratedValues(generatedKeyResultSet.next(), result); } return result; }); final String[] keys = ormClassTool.getDescriptor().getAllNotGeneratedColumnJavaNames(); return sqlExecutor.update(sql, statement -> persistor.setBeanValuesToStatement(keys, updatedBean, statement, 0), generatedKeyExtractor); } }