2014-09-05 109 views
4

我有一个系统与Hibernate 4.1.7和Spring 1.3.4 jpa。当我运行myEntity.findOne(id)时,在控制台中的休眠WARN日志记录:与WARN Hibernate在控制台登录HHH000174

[main];警告; org.hibernate.dialect.function.TemplateRenderer; - HHH000174:函数模板预期有四个参数,但首次遇到参数 。

了解有关在一些可能的解决方案,但解决不了我的问题在http://jira.xwiki.org/browse/XWIKI-9215https://hibernate.atlassian.net/browse/HHH-6280

我检查的代码记录在org.hibernate.dialect.function.TemplateRenderer

@SuppressWarnings({ "UnusedDeclaration" }) 
    public String render(List args, SessionFactoryImplementor factory) { 
     int numberOfArguments = args.size(); 
     if (getAnticipatedNumberOfArguments() > 0 && numberOfArguments != getAnticipatedNumberOfArguments()) { 
      LOG.missingArguments(getAnticipatedNumberOfArguments(), numberOfArguments); 
     } 
     StringBuilder buf = new StringBuilder(); 
     for (int i = 0; i < chunks.length; ++i) { 
      if (i < paramIndexes.length) { 
       final int index = paramIndexes[i] - 1; 
       final Object arg = index < numberOfArguments ? args.get(index) : null; 
       if (arg != null) { 
        buf.append(chunks[i]).append(arg); 
       } 
      } 
      else { 
       buf.append(chunks[i]); 
      } 
     } 
     return buf.toString(); 
    } 
+0

答案张贴为您接受 – 2014-09-05 15:42:11

回答

5

首先良好的科研

是的,这是与Hibernate提出作为一个bug较早,并提供了一个修复也。但由于缺乏测试用例,它被拒绝,并且从未作为后续发行版的一部分发布。

该错误是作为Hibernate 3.6的一部分引入的。

所以还是需要等人提高票价,并提供合适的测试用例和修复。

参考here了解更多详情。

+0

这是帮助我=) – diegohsi 2017-12-28 11:54:44

0

被引用的(根本原因)休眠错误HHH-5676被拒绝,所以我预计在不久的将来这个警告没有改进。

有一种方法可以关闭它,至少如果它让你烦恼。您可以将hibernate类TemplateRenderer的日志级别限制为ERROR。 TemplateRenderer类执行此日志,并且(此时)这是该类中唯一的日志记录。这取决于你的记录器如何去做。在我的情况下:

logger.org.hibernate.dialect.function.TemplateRenderer.level=ERROR 

隐藏这是有风险的,因为显而易见的原因。小心操作!