3 Stimmen

Standard-Polymorphismus in Hibernate ändern

Ich möchte Folgendes einstellen polymorphism="explicit" Eigenschaft zu mehreren Hibernate-Mapping-Klassen. Ist es möglich, die Standard implicit Wert, so dass ich nicht die explicit in mehreren Klassen?

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

Ich verwende Hibernate-Mapping-xml-Dateien (keine Annotationen oder JPA) und es wurde von Spring wie folgt geladen,

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

Ich danke Ihnen.

0voto

Binil Thomas Punkte 13559

Wenn man sich in den Hibernate-Quellen umsieht, sieht es so aus, als gäbe es keine Möglichkeit, diese Einschränkung zu umgehen.

Die Hibernate-Kernklassen scheinen die Polymorphismus Einstellung durch den Aufruf verschiedener isExplicitPolymorphism() Methoden, die alle auf folgende Punkte hinauszulaufen scheinen org.hibernate.mapping.PersistentClass.isExplicitPolymorphism() Methode. Der von dieser Methode zurückgegebene Wert wird auf org.hibernate.mapping.RootClass.setExplicitPolymorphism() Methode. Diese Methode wird nur aufgerufen von org.hibernate.cfg.HbmBinder.bindRootPersistentClassCommonValues() (für die XML-Konfiguration) und org.hibernate.cfg.annotations.EntityBinder.bindEntity() (für die Konfiguration von Anmerkungen) Methoden.

Ich sehe keinen Weg, wie man die ploymorphism=explicit für alle Entitäten in einer Mapping-Datei.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X