2012-11-17 30 views
5

我從休眠3遷移到休眠4, 在休眠3,我註冊的自定義類型的方式在Hibernate中註冊自定義的類型是:如何使用org.springframework.orm.hibernate4.LocalSessionFactoryBean

public class AnnotationSessionFactoryBean extends org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean { 
private Collection<? extends BasicType> customTypes; 

public Collection<? extends BasicType> getCustomTypes() { 
    return customTypes; 
} 

public void setCustomTypes(Collection<? extends BasicType> customTypes) { 
    this.customTypes = customTypes; 
} 

@Override 
protected Configuration newConfiguration() throws HibernateException { 
    Configuration configuration = super.newConfiguration(); 
    if (CollectionUtils.hasEntries(customTypes)) { 
     for (BasicType customType:customTypes) { 
      configuration.registerTypeOverride(customType); 
     } 
    } 
    return configuration; 
}} 

我現在試圖做同樣的操作,但使用休眠4,我的問題是如何做到這一點的最佳方式?因爲我沒有訪問時使用「org.springframework.orm.hibernate4.LocalSessionFactoryBean」而不是「org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean」更改配置。

感謝

回答

3

在你的實體類之一,註釋類,如下所示:

@TypeDefs({ 
    @TypeDef(name="type1",typeClass=me.sample.Type1.class), 
    @TypeDef(name="type2",typeClass=me.sample.Type2.class) 
}) 

春3.1合併設置LocalSessionFactoryBean的AnnotationSessionFactoryBean,委託給Hibernate的配置是否要使用註釋VS 。XML接線。

3

在Hibernate 4,你可以使用LocalSessionFactoryBean,而無需將其擴展:

sessionFactory.getConfiguration().registerTypeOverride(TypeOverride.INSTANCE); 

雖然,這將在休眠5.0走開:

注意:這將通過利用組織來代替。 hibernate.boot.registry.StandardServiceRegistryBuilder和org.hibernate.metamodel.MetadataSources,而不是4.0版本之後,此時此類將被棄用並計劃在5.0中刪除。有關詳細信息,請參閱HHH-6183,HHH-2578和HHH-6586

+2

我必須在那裏添加該功能? – Aitch

相關問題