2012-02-07 68 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