У меня проблема с вызовом хранимой процедуры с использованием StoredProcedureQuery
из hibernate-jpa-2.1 и postgresql, вот мой java код:
public String updateSO(String salesorderID, String ahassCode) {
EntityManager em = this.entityManagerFactory.createEntityManager();
try{
String message="";
em.getTransaction().begin();
StoredProcedureQuery call = em.createStoredProcedureQuery("update_status_so");
call.registerStoredProcedureParameter("dealercode",String.class, ParameterMode.IN);
call.registerStoredProcedureParameter("salesorderid_update",String.class, ParameterMode.IN);
call.registerStoredProcedureParameter("message_value",String.class, ParameterMode.OUT);
call.setParameter("dealercode", ahassCode);
call.setParameter("salesorderid_update", salesorderID);
message=(String)call.getOutputParameterValue("message_value");
em.getTransaction().commit();
em.clear();
em.close();
} catch (Exception e) {
e.printStackTrace();
em.close();
}
}
, а вот моя хранимая процедура:
CREATE OR REPLACE FUNCTION public.update_status_so(
dealercode text,
salesorderid_update text,
OUT message_value text)
RETURNS text
LANGUAGE 'plpgsql'
COST 100
VOLATILE SECURITY DEFINER
AS $BODY$
DECLARE so_updated character varying;
BEGIN
case when exists (select salesorderid from public.trx_salesorder where salesorderid=salesorderid_update and ahasscode=dealercode and salesorderlastknownstatus='DRAFT')
then
update public.trx_salesorder set salesorderlastknownstatus='BOOK' where salesorderid=salesorderid_update and ahasscode=dealercode and salesorderlastknownstatus='DRAFT';
message_value='data updated to BOOK';
else
message_value='data already submited';
end case;
END;
$BODY$;
В моем случае я открываю свое приложение в двух браузерах (chrome и firefox) с одинаковой позицией (обновить данные) и одинаковыми данными, когда я нажимаю кнопку обновления на firefox данных в база данных изменилась, и я получаю сообщение = "данные обновлены в КНИГУ", но когда я снова нажимаю кнопку обновления на chrome, она должна вернуть сообщение = "данные уже отправлены", но всегда возвращает сообщение = "данные обновлены в КНИГУ", что я пропустил?