Я борюсь с вызовом в мою базу данных через Spring Jdb c, ни один из вопросов о переполнении стека не работает для меня, поэтому я и задаю его.
Вот мой DAO
public class CruDao extends JdbcDaoSupport implements ICruDao{
private final Logger LOG = LoggerFactory.getLogger(CruDao.class);
@Override
public String obtainCode(String codiModel) {
String code = null;
SimpleJdbcCall funcio = new SimpleJdbcCall(getJdbcTemplate()).withFunctionName("funcCru");
MapSqlParameterSource parameter = new MapSqlParameterSource().addValue("id", codiModel);
try {
code = funcio.executeFunction(String.class, parameter);
LOG.debug("Generated Code: " + code);
}catch(Exception ex){
LOG.error("Error",ex);
}
return codiCRU;
}
}
Вот исключение, которое выдает при вызове строки executeFunction
:
org.springframework.dao.DataAccessResourceFailureException: Error retreiving database metadata; nested exception is org.springframework.jdbc.support.MetaDataAccessException: Could not get Connection for extracting meta data; nested exception is org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is org.jboss.util.NestedSQLException: Transaction is not active: tx=TransactionImple < ac, BasicAction: -3f5796c1:d4ac:5e1c3647:9ff status: ActionStatus.ABORTED >; - nested throwable: (javax.resource.ResourceException: Transaction is not active: tx=TransactionImple < ac, BasicAction: -3f5796c1:d4ac:5e1c3647:9ff status: ActionStatus.ABORTED >)
Я правильно объявил компоненты для источника данных с информацией базы данных.
РЕДАКТИРОВАТЬ Метод, в котором я называю мой DAO, уже был @ Transactional
@Override
@Transactional
public byte[] obtenirModel(String codiModel) {
byte[] genDocByteArray = null;
codiCRU = cruDao.obtainCode(codiModel);
if(codiCRU == null || codiCRU.length() < 1){
log.error("Errorrr");
return null;
}
...
Чего мне не хватает? Спасибо за совет.