Изменить полиморфизм по умолчанию в Hibernate - PullRequest
3 голосов
/ 08 июня 2010

Я бы хотел установить свойство polymorphism="explicit" для нескольких классов отображения гибернации. Можно ли переопределить значение по умолчанию implicit, чтобы мне не нужно было устанавливать explicit в нескольких классах?

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

Я использую XML-файлы с отображением гибернации (без аннотаций или JPA), и он был загружен Spring следующим образом:

<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>

Спасибо.

1 Ответ

0 голосов
/ 05 июня 2011

Просматривая источники в спящем режиме, кажется, что нет никакого способа обойти это ограничение.

Классы ядра 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 для всех сущностей в файле сопоставления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...