执行“query”方法时,JdbcTemplate返回一个空列表。
public List<Loan> getLoanDAO(Employee employee, String s) {
final String SQL = "SELECT CTLPCODCIA, CTLPCODSUC, CTLPCODTRA, EMPNOMBRE, EMPAPATERN, EMPAMATERN, CTLPCODPRE, "
+ "CTLPTIPPRE, TIPDESPRE, CTLPMONEDA, CTLPESTADO, CTLPMONTOP, CTLPNROCUO, CTLPCUOTA, FLAGTIPOCUOTA, CTLGLOSA, CTLDIASFR, "
+ "CTLDOCADJ, CTLUSUCREA, CTLFECCREA "
+ "FROM HR_CTLPREC_SS INNER JOIN HR_EMPLEADO ON CTLPCODCIA=EMPCODCIA AND CTLPCODSUC=EMPCODSUC AND CTLPCODTRA=EMPCODTRA "
+ "INNER JOIN HR_TIPPRE ON CTLPCODCIA=TIPCODCIA AND CTLPCODSUC=TIPCODSUC AND CTLPTIPPRE=TIPCODPRE "
+ "WHERE TIPFLGEST = '1' AND TIPSELFSERVICE = '1' "
+ "AND CTLPCODCIA = ? AND CTLPCODSUC = ? AND EMPCODTRAJEF = ? AND CTLPESTADO = ? ";
List<Loan> loans = jdbcTemplate.query(SQL, new Object[] {
employee.getCTLPCODCIA(), employee.getCTLPCODSUC(), employee.getCTLPCODTRA(), s }, loanMapper);
return loans;
}
但是,在更换“?”时使用在sqldeveloper中执行和执行时使用的相同参数,它返回4行。我不知道出了什么问题,因为我一直在以相同的方式为所有其他实体做数据访问代码。
正如@Julian所说:
JdbcTemplate是大量应用程序使用的经过验证的spring组件,因此在我看来,它必定是代码中的错误。
这不是JdbcTemplate的问题,也不是我的代码。这是IDE的一个问题。我只是使用maven控制台命令从头开始构建我的项目,代码按预期工作。
谢谢大家。
JdbcTemplate是大量应用程序使用的经过验证的spring组件,因此在我看来,它必定是代码中的错误。不确定您使用的是哪个版本的Spring,但jdbcTemplate.query会将Loan Mapper类视为其参数之一。您的代码中不存在这样的映射器。
我建议你在查询之前放置一个断点,检查员工字段,看看它们是否与你在sqldeveloper中播放的值相匹配。
它引起我注意的另一件事是第三个你有EMPCODTRAJEF =?在查询定义中,但您使用employee.getCTLPCODTRA()作为参数。显然我不知道你的数据模型,但它应该是employee.getEMPCODTRAJEF()还是相反?
如果这不起作用,请仔细检查您的参数。
final String SQL = "SELECT CTLPCODCIA, CTLPCODSUC, CTLPCODTRA, EMPNOMBRE, EMPAPATERN, EMPAMATERN, CTLPCODPRE, "
+ "CTLPTIPPRE, TIPDESPRE, CTLPMONEDA, CTLPESTADO, CTLPMONTOP, CTLPNROCUO, CTLPCUOTA, FLAGTIPOCUOTA, CTLGLOSA, CTLDIASFR, "
+ "CTLDOCADJ, CTLUSUCREA, CTLFECCREA "
+ "FROM HR_CTLPREC_SS INNER JOIN HR_EMPLEADO ON CTLPCODCIA=EMPCODCIA AND CTLPCODSUC=EMPCODSUC AND CTLPCODTRA=EMPCODTRA "
+ "INNER JOIN HR_TIPPRE ON CTLPCODCIA=TIPCODCIA AND CTLPCODSUC=TIPCODSUC AND CTLPTIPPRE=TIPCODPRE "
+ "WHERE CTLPCODCIA=? AND CTLPCODSUC = ? AND EMPCODTRAJEF = ? AND CTLPESTADO = ? "
+ "AND TIPFLGEST='1' AND TIPSELFSERVICE='1'";
将其添加到application.properties
以调试您的查询。 logging.level.org.springframework.jdbc.core = TRACE