Problème mapping héritage
Salut,
J'ai fait un fichier de mapping qui décrit un héritage avec la stratégie une table par classe fille avec un discriminant.
A la base ce fichier fonctionne très bien. Le problème que j'ai survient quand dans une des classes filles je veux ajouter une association one to many (dans la classe fille ZoneDataCoordinates)
Voici mon fichier de mapping :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
|
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package = "com.tas.ouate.jsynperf.data.model">
<class name="Coordinates" table="COORDINATES">
<id name="id" column="COORDINATES_ID">
<generator class="sequence"/>
</id>
<discriminator column="COORDINATES_TYPE" type="string"/>
<property name="name"/>
<property name="condition" type="com.tas.ouate.jsynperf.common.util.MeasureCondition" column="CONDITION"/>
<many-to-one name="flightSet"
lazy="false"
column="FLIGHTSET_ID"
not-null="false"/>
<subclass name="SimpleCoordinates" discriminator-value="SIMPLE">
<join table="SIMPLE_COORDINATES">
<key column="COORDINATES_ID"/>
<property name="line" column="LINE"/>
<property name="column" column="COLUMN"/>
</join>
</subclass>
<subclass name="ZoneDataCoordinates" discriminator-value="ZONE_DATA">
<join table="ZONEDATA_COORDINATES">
<key column="COORDINATES_ID"/>
</join>
<bag name="coordinatesList" inverse="true" lazy="false" cascade="persist,merge,save-update,delete-orphan">
<key column="COORDINATES_ID"/>
<one-to-many class="ComplexCoordinates"/>
</bag>
</subclass>
</class>
</hibernate-mapping> |
Voici l'erreur que j'ai :
Citation:
org.hibernate.InvalidMappingException: Could not parse mapping document from resource com/tas/ouate/jsynperf/data/mapping/Coordinates.hbm.xml
at org.hibernate.cfg.Configuration.addResource(Configuration.java:586)
at com.tas.ouate.jsynperf.database.configuration.HibernateConfig.initialize(HibernateConfig.java:16)
at com.tas.ouate.jsynperf.gui.rcp.application.Application.start(Application.java:63)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:369)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:619)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:574)
at org.eclipse.equinox.launcher.Main.run(Main.java:1407)
at org.eclipse.equinox.launcher.Main.main(Main.java:1383)
Caused by: org.hibernate.InvalidMappingException: Could not parse mapping document from invalid mapping
at org.hibernate.cfg.Configuration.addInputStream(Configuration.java:549)
at org.hibernate.cfg.Configuration.addResource(Configuration.java:583)
... 15 more
Caused by: org.xml.sax.SAXParseException: The content of element type "subclass" must match "(meta*,tuplizer*,synchronize*,(property|many-to-one|one-to-one|component|dynamic-component|any|map|set|list|bag|idbag|array|primitive-array)*,join*,subclass*,loader?,sql-insert?,sql-update?,sql-delete?,resultset*,(query|sql-query)*)".
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source)
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.error(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.handleEndElement(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.endElement(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
at org.dom4j.io.SAXReader.read(SAXReader.java:465)
at org.hibernate.cfg.Configuration.addInputStream(Configuration.java:546)
... 16 more
Je ne fais sûrement pas ca de la bonne facon mais je ne comprends pas comment faire, donc si quelqu'un a des explications à me fournir, par avance merci!!