@Override public Pay createPay(Pay pay) { Pay result = new Pay(); Pay currentPay = pay; MapSqlParameterSource params = new MapSqlParameterSource(); String sqlUpdate = "insert into pays (time, demand_id, manufacturer, storno, summ, user, numDoc, client)" + " Values (:time, :demand_id, :manufacturer, :storno, :summ, :user, :NumDoc, :client)"; if (currentPay.getId() > 0) { // В БД есть такой элемент sqlUpdate = "update pays set time=:time, demand_id=:demand_id, manufacturer=:manufacturer, storno=:storno" + ", summ=:summ, user=:user, numDoc=:NumDoc, client=:client where id=:id"; params.addValue("id", currentPay.getId()); } params.addValue("time", pay.getTime()); params.addValue("demand_id", pay.getDemand_id()); params.addValue( "user", (((User) pay.getUser()).getId() == 0 ? Service.ID_CUSTOMER : ((User) pay.getUser()).getId())); params.addValue("manufacturer", ((Manufacturer) pay.getManufacturer()).getId()); params.addValue("storno", (pay.isStorno() ? 1 : 0)); params.addValue("summ", (pay.isStorno() ? -1 : 1) * pay.getSumm()); params.addValue("NumDoc", pay.getNumDoc()); params.addValue("client", ((Client) pay.getClient()).getId()); KeyHolder keyHolder = new GeneratedKeyHolder(); jdbcTemplate.update(sqlUpdate, params, keyHolder); try { if (keyHolder.getKey() != null) { result = getPayById(keyHolder.getKey().intValue()); } } catch (EmptyResultDataAccessException e) { result = new Pay(); } return result; }