2010-06-08 80 views
3

我想將polymorphism="explicit"屬性設置爲多個hibernate映射類。是否可以重寫默認的implicit值,以便我不需要在多個類中設置explicit更改Hibernate中的默認多態性

<class name="xxxxx" table="XXXXX" polymorphism="explicit"> 

我使用Hibernate映射XML文件(沒有說明或JPA),它是由彈簧加載如下,

<bean id="xxxsessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> 
    <property name="dataSource"> 
     <ref bean="xxxDataSource"/> 
    </property> 
    <property name="mappingResources"> 
     <list> 
      <value>xxx.hbm.xml</value> 
      -------- 
      -------- 
     </list> 
    </property> 
    <property name="hibernateProperties"> 
     <props> 
      <prop key="hibernate.dialect">org.hibernate.dialect.OracleDialect</prop> 
      ---- 
      ---- 
     </props> 
    </property> 
</bean> 

謝謝。

回答

0

瀏覽hibernate源代碼,看起來好像沒有辦法繞過這個限制。

的休眠核心類似乎通過調用各種isExplicitPolymorphism()方法,這一切似乎都歸結爲org.hibernate.mapping.PersistentClass.isExplicitPolymorphism()方法確定多態性設置。從此方法返回的值設置爲org.hibernate.mapping.RootClass.setExplicitPolymorphism()方法。僅在org.hibernate.cfg.HbmBinder.bindRootPersistentClassCommonValues()(用於XML配置)和org.hibernate.cfg.annotations.EntityBinder.bindEntity()(用於註釋配置)方法中調用此方法。

我沒有看到爲映射文件中的所有實體設置ploymorphism=explicit的方法。