无法在DuplicateKeyException上解析符号“记录器”

时间:2019-05-29 10:38:30

标签: java spring-jdbc on-duplicate-key

简而言之:与许多教程不同,无法识别对象“ logger”。

问题本身并不是很严重,我可以轻松解决。但是,看到此“记录器”在我的intellIj编辑器中显示为红色非常令人沮丧。我正在浏览文档和博客,但没有发现问题所在。

我的代码段:

@Override
public void insertTicketStatut(TicketStatut pTicketStatut) {
    String vSQL = "INSERT INTO statut {id, libelle} VALUES {:id, :libelle}";

    BeanPropertySqlParameterSource vParams = new BeanPropertySqlParameterSource(pTicketStatut);
    NamedParameterJdbcTemplate vJdbcTemplate = new NamedParameterJdbcTemplate(getDataSource());

    try {
        vJdbcTemplate.update(vSQL, vParams);
    } catch (DuplicateKeyException pE){
        logger.error("Le TicketStatut existe déjà ! id="+ pTicketStatut.getId(),pE);
    }
}

将鼠标悬停在记录器上会显示“无法解析符号'记录器' 感谢您的帮助。

3 个答案:

答案 0 :(得分:1)

记录器需要实例化或更好地注入。看来您没有这样做。当您使用诸如log4j之类的日志记录框架时,初始化将如下所示:

static Logger logger = Logger.getLogger(MainApp.class.getName());

当您向我们展示整个课程时,我们可以看到更多细节并且可以做出更好的猜测。

可以在here中找到有关log4j和spring的教程。

答案 1 :(得分:1)

推荐使用sl4j

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

然后实例化:

//generic way to declare logger to be able to copy/paste to other classes
//without changing the class name
private final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());

在依赖性方面,包括用于sl4j实现的绑定(可以是log4j)。

可以在这里参考:

logging-with-slf4j

答案 2 :(得分:0)

确实,我没有正确管理我的导入:

我添加了:

    private final Log logger = LogFactory.getLog(TicketDaoImpl.class);

来自

  

org.apache.commons.logging.Log;

愚蠢的注意力缺乏

我还在看Baeldung上log4j / sl4j的文档。谢谢^^