2012-02-07 67 views
2

我已经构建了一个独立的Java应用程序(批处理),通过JPA 2使用休眠。 它运行良好,但我经常在日志中看到此警告。休眠 - 难以理解的警告

我已经使用Google直接阅读源代码,没有运气。

WARN org.hibernate.type.TypeFactory TypeFactory.java:69  Scoping types to session factory [email protected] after already scoped [email protected] 

我想知道这是什么意思?

+0

您是否定义了多个使用相同类型的工厂? – MahdeTo 2012-02-07 15:32:49

+0

实际上,我向会话动态添加了新的实体。 – Stephan 2012-02-08 05:11:07

回答

2

这是当你设置会话工厂的两倍(会话工厂已经设置)。将日志记录设置为跟踪并查找它说'将会话类型映射到会话工厂'的位置,然后再重新设置它,但看起来它不会引起问题,但API看起来像是在理想情况下,您应该只曾经设置过一次工厂。

+0

其实,我正在创建一个配置对象,并通过向它添加新的实体来不断重用它。每次添加新实体时创建一个新配置都可以解决我的问题。 – Stephan 2012-03-01 18:59:27

1

直接从来源:

public final class TypeFactory implements Serializable { 
    private static final Logger log = LoggerFactory.getLogger(TypeFactory.class); 

    private final TypeScopeImpl typeScope = new TypeScopeImpl(); 

    public static interface TypeScope extends Serializable { 
     public SessionFactoryImplementor resolveFactory(); 
    } 

    private static class TypeScopeImpl implements TypeFactory.TypeScope { 
     private SessionFactoryImplementor factory; 

     public void injectSessionFactory(SessionFactoryImplementor factory) { 
      if (this.factory != null) { 
       log.warn("Scoping types to session factory {} after already scoped {}", this.factory, factory); 
      } 
      else { 
       log.trace("Scoping types to session factory {}", factory); 
      } 
      this.factory = factory; 
     } 

...

+0

那么范围是什么?这是不同工厂的范围类型的错误吗? – Stephan 2012-02-07 15:13:13

+0

我不知道,我认为消息人士可能会澄清你的“问题”! – vulkanino 2012-02-07 15:21:11