У меня есть процедура в SQL Server, и я выполняю эту процедуру с помощью диспетчера сущностей в приложении весенней загрузки.
Когда в этой процедуре выдается исключение, метод, который он выполняет, эта процедура не перехватываетисключение (я включил исключение постоянства в блоке catch).
Любая помощь будет принята с благодарностью.
@Configuration
public class SampleOperations {
@Autowired
@PersistenceContext(unitName = "SampleUnit")
@Qualifier("SampleEntityManagerFactory")
private EntityManager entityMgr;
public void method1(DModel mapObject) throws CustomException {
boolean queryStatus = false;
try {
StoredProcedureQuery sp = entityMgr.createStoredProcedureQuery("proc_clean_current_version_tables");
sp.registerStoredProcedureParameter(1, String.class, ParameterMode.IN);
sp.registerStoredProcedureParameter(2, String.class, ParameterMode.IN);
sp.setParameter(1, mapObject.getCountry());
sp.setParameter(2, mapObject.getVersion());
sp.execute();
entityMgr.close();
} catch (IllegalArgumentException | PersistenceException e) {
throw new Customxception(
"Unable to execute procedure ");
}
}
}
SQL-процедура сервера
BEGIN TRY
DROP TABLE IF EXISTS #get_col_hdr;
CREATE TABLE #get_col_hdr(colName VARCHAR(MAX));
INSERT INTO #get_col_hdr
EXEC proc_get_column_header
@tableId,
@cntr;
SELECT @columnHeader = colName
FROM #get_col_hdr;
END TRY
BEGIN CATCH
set @error_message = 'Unable to import tables from databases
.'+ERROR_MESSAGE();
THROW 60000, @error_message, 1;
END CATCH