Я хочу выполнить сохраненную функцию. Он принимает параметры и дает один результат. Но как мне получить этот результат?
Ошибка: локальные переменные, на которые ссылается внутренний класс, должны быть окончательными или эффективно окончательными
public static String season_overlap(int userid, Date sAnf, Date sEnd) throws DatabaseException {
Session hsession = null;
String result = null;
try {
hsession = HibernateUtil.getSessionFactory().openSession();
hsession.doWork(new Work() {
@Override
public void execute(Connection cnctn) throws SQLException {
try (CallableStatement cStmt = cnctn.prepareCall("{? = CALL season_overlap(?, ?, ?)}")) {
cStmt.registerOutParameter(1,java.sql.Types.VARCHAR);
cStmt.setInt(2, userid);
cStmt.setDate(3, sAnf);
cStmt.setDate(4, sEnd);
cStmt.execute();
result = cStmt.getString(1);
}
}
});
} catch (HibernateException ex) {
throw new DatabaseException(ex);
} finally {
if (hsession != null)
hsession.close();
}
return result;
}