JdbcTemplate返回空列表

问题描述 投票:1回答:2

执行“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控制台命令从头开始构建我的项目,代码按预期工作。

谢谢大家。

java spring jdbctemplate
2个回答
1
投票

JdbcTemplate是大量应用程序使用的经过验证的spring组件,因此在我看来,它必定是代码中的错误。不确定您使用的是哪个版本的Spring,但jdbcTemplate.query会将Loan Mapper类视为其参数之一。您的代码中不存在这样的映射器。

我建议你在查询之前放置一个断点,检查员工字段,看看它们是否与你在sqldeveloper中播放的值相匹配。

它引起我注意的另一件事是第三个你有EMPCODTRAJEF =?在查询定义中,但您使用employee.getCTLPCODTRA()作为参数。显然我不知道你的数据模型,但它应该是employee.getEMPCODTRAJEF()还是相反?


0
投票

如果这不起作用,请仔细检查您的参数。

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

© www.soinside.com 2019 - 2024. All rights reserved.