如果我用@transactions注解方法,就会发生奇怪的行为。代码类似于:
@Transactional(rollbackOn = BookkeepingException.class )
public VoucherImport importVouchers(Voucher v) {
String number = anotherService.generateVoucherNumber();
//Some code here
}
在另一个service.class中,我有一个调用pl/sql函数的方法。
...
SimpleJdbcCall call = new SimpleJdbcCall(jdbcTemplate.getJdbcTemplate()).withCatalogName("MY_CATALOG")
.withFunctionName("GENERATE_V").declareParameters(..)
//Give parameters values here.
BigDecimal voucherNumber = call.executeFunction(BigDecimal.class, paramMap);
...
这将产生以下错误:
SQL state [99999]; error code [17041]; Missing IN or OUT parameter at index:: 1; nested exception is java.sql.SQLException: Missing IN or OUT parameter at index:: 1
但是,如果我删除@transactional注解,代码就可以正常工作。在spring类内部进行调试时,我注意到它没有在内部解析参数。知道是什么导致了这种行为吗。
暂无答案!
目前还没有任何答案,快来回答吧!