Вы можете выдавать пользовательские сообщения об ошибках из кода PL / SQL. Коды ошибок от -20000 до -20999 зарезервированы для указанных пользователем сообщений об ошибках.
Вы делаете это, вызывая функцию raise_application_error
в вашем PL / SQL:
raise_application_error(-20001, 'Your error code message here');
Это будет распространяться как обычные ошибки Oracle.
Edit:
Я не пользователь Hibernate, но я нашел это, пытаясь найти ответ, и я думаю, что он приведет вас на правильный путь.
try
{
// some hibernate calls
}
catch (GenericJdbcException ge)
{
if(ge.getCause() != null && ge.getCause() instanceof SQLException)
{
SQLException se = (SQLException)ge.getCause();
// *****************************************************************
// NOTE: THIS will be where you check for your customer error code.
// *****************************************************************
if(se.getErrorCode() == -20001)
{
// your error handling for this case
}
else
{
throw ge; // do not swallow unhandled exceptions
}
}
else
{
throw ge // do not swallow unhandled exceptions
}
}