View Full Version : Mapping file is not parsed
czy11421
Jul 13th, 2007, 09:44 AM
I am using Spring 2.0.6 and Hibernate 3.0. But I always get error when it parses
<discriminator column="des" type="string" />
Here is my mapping file
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="data.User" table="mts_user" >
<cache usage="read-write"/>
<id name="userId" column="userId">
<generator class="increment"/>
</id>
<property name="userName"/>
<property name="active" type="java.lang.Boolean" />
<discriminator column="des" type="string" />
<subclass name="data.Employee" discriminator-value="EMPLOYEE">
<property name="salary" />
</subclass>
</class>
</hibernate-mapping>
The exception is
org.xml.sax.SAXParseException: The content of element type "class" must match "(meta*,subselect?,cache?,synchronize*,comment?,tup lizer*,(id|composite-id),discriminator?,natural-id?,(version|timestamp)?,(property|many-to-one|one-to-one|component|dynamic-component|properties|any|map|set|list|bag|idbag|ar ray|primitive-array)*,((join*,subclass*)|joined-subclass*|union-subclass*),loader?,sql-insert?,sql-update?,sql-delete?,filter*,resultset*,(query|sql-query)*)".
at com.sun.org.apache.xerces.internal.util.ErrorHandl erWrapper.createSAXParseException(ErrorHandlerWrap per.java:236)
at com.sun.org.apache.xerces.internal.util.ErrorHandl erWrapper.error(ErrorHandlerWrapper.java:172)
at com.sun.org.apache.xerces.internal.impl.XMLErrorRe porter.reportError(XMLErrorReporter.java:382)
at com.sun.org.apache.xerces.internal.impl.XMLErrorRe porter.reportError(XMLErrorReporter.java:316)
at com.sun.org.apache.xerces.internal.impl.dtd.XMLDTD Validator.handleEndElement(XMLDTDValidator.java:20 48)
at com.sun.org.apache.xerces.internal.impl.dtd.XMLDTD Validator.endElement(XMLDTDValidator.java:932)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocum entScannerImpl.scanEndElement(XMLNSDocumentScanner Impl.java:719)
at com.sun.org.apache.xerces.internal.impl.XMLDocumen tFragmentScannerImpl$FragmentContentDispatcher.dis patch(XMLDocumentFragmentScannerImpl.java:1685)
at com.sun.org.apache.xerces.internal.impl.XMLDocumen tFragmentScannerImpl.scanDocument(XMLDocumentFragm entScannerImpl.java:368)
at com.sun.org.apache.xerces.internal.parsers.XML11Co nfiguration.parse(XML11Configuration.java:834)
at com.sun.org.apache.xerces.internal.parsers.XML11Co nfiguration.parse(XML11Configuration.java:764)
at com.sun.org.apache.xerces.internal.parsers.XMLPars er.parse(XMLParser.java:148)
at com.sun.org.apache.xerces.internal.parsers.Abstrac tSAXParser.parse(AbstractSAXParser.java:1242)
at org.dom4j.io.SAXReader.read(SAXReader.java:465)
I guess it is the parser problem. I am using Dom4j-1.6 and JDK1.5, The IDE is Eclipse 3.2.
Thanks.
Marten Deinum
Jul 13th, 2007, 10:27 AM
It isn't a parser problem, if you look closer at the error message it tells you that the structure of your xml isn't valid. If you take an even closer look it also tells you the structure that it should validate against. That tells you that your discriminator element must become after your ID element and before anything else.
czy11421
Jul 13th, 2007, 10:46 AM
It isn't a parser problem, if you look closer at the error message it tells you that the structure of your xml isn't valid. If you take an even closer look it also tells you the structure that it should validate against. That tells you that your discriminator element must become after your ID element and before anything else.
Yes, you are right.
Thanks.
guoway
Jun 3rd, 2008, 08:19 AM
I'm using Spring 2.0.8 and Hibernate 3.2, and now I've got the same problem too, but I guess there is a little bit difference between czy11421's and mine.
I've put the <discriminator> after <id>, and the exception was still occurred.
could anyone help me solve this problem ?
<?xml version="1.0"?>
<hibernate-mapping package="com.sylk.accounting">
<typedef name="item" class="com.sylk.generic.persistence.EnumUserType">
<param name="enumClassName">com.sylk.accounting.ItemCategory</param>
</typedef>
<class name="Record" table="record">
<id type="long">
<column name="id" precision="22" scale="0"/>
<generator class="increment"/>
</id>
<discriminator column="type" type="string"/>
<subclass name="Income" discriminator-value="income"/>
<property name="comment" type="string" column="comment"/>
<property name="date" type="date" column="date"/>
<property name="description" type="string" column="description"/>
<property name="money" type="long" column="money"/>
<property name="item" type="item"/>
<set name="evidences" table="record_evidence">
<key column="record_id"/>
<element type="com.sylk.hibernate.BlobUserType" column="evidence"/>
</set>
</class>
</hibernate-mapping>
ERROR-2008/06/03 12:52:39- [main] (ClassName:XMLHelper.java;RolS:61) - Error parsing XML: XML InputStream(25) The content of element type "class" must match "(meta*,subselect?,cache?,synchronize*,comment?,tup lizer*,(id|composite-id),discriminator?,natural-id?,(version|timestamp)?,(property|many-to-one|one-to-one|component|dynamic-component|properties|any|map|set|list|bag|idbag|ar ray|primitive-array)*,((join*,subclass*)|joined-subclass*|union-subclass*),loader?,sql-insert?,sql-update?,sql-delete?,filter*,resultset*,(query|sql-query)*)".
INFO-2008/06/03 12:52:39- [main] (ClassName:DefaultSingletonBeanRegistry.java;RolS: 282) - Destroying singletons in org.springframework.beans.factory.support.DefaultL istableBeanFactory@157fb52: defining beans [dataSource,sessionFactory,cacheManager,recordDAO]; root of factory hierarchy
org.springframework.beans.factory.BeanCreationExce ption: Error creating bean with name 'sessionFactory' defined in file [D:\eclipse_workspaces\sylk\WebContent\WEB-INF\config\hibernate-config.xml]: Invocation of init method failed; nested exception is org.hibernate.InvalidMappingException: Could not parse mapping document from invalid mapping
Caused by: org.hibernate.InvalidMappingException: Could not parse mapping document from invalid mapping
at org.hibernate.cfg.Configuration.addInputStream(Con figuration.java:502)
at org.springframework.orm.hibernate3.LocalSessionFac toryBean.buildSessionFactory(LocalSessionFactoryBe an.java:656)
at org.springframework.orm.hibernate3.AbstractSession FactoryBean.afterPropertiesSet(AbstractSessionFact oryBean.java:134)
at org.springframework.beans.factory.support.Abstract AutowireCapableBeanFactory.invokeInitMethods(Abstr actAutowireCapableBeanFactory.java:1203)
at org.springframework.beans.factory.support.Abstract AutowireCapableBeanFactory.initializeBean(Abstract AutowireCapableBeanFactory.java:1172)
at org.springframework.beans.factory.support.Abstract AutowireCapableBeanFactory.createBean(AbstractAuto wireCapableBeanFactory.java:427)
at org.springframework.beans.factory.support.Abstract BeanFactory$1.getObject(AbstractBeanFactory.java:2 49)
at org.springframework.beans.factory.support.DefaultS ingletonBeanRegistry.getSingleton(DefaultSingleton BeanRegistry.java:155)
at org.springframework.beans.factory.support.Abstract BeanFactory.getBean(AbstractBeanFactory.java:246)
at org.springframework.beans.factory.support.Abstract BeanFactory.getBean(AbstractBeanFactory.java:160)
at org.springframework.beans.factory.support.DefaultL istableBeanFactory.preInstantiateSingletons(Defaul tListableBeanFactory.java:285)
at org.springframework.context.support.AbstractApplic ationContext.refresh(AbstractApplicationContext.ja va:352)
at org.springframework.context.support.FileSystemXmlA pplicationContext.<init>(FileSystemXmlApplicationContext.java:124)
at org.springframework.context.support.FileSystemXmlA pplicationContext.<init>(FileSystemXmlApplicationContext.java:78)
at com.sylk.accounting.dao.junit.RecordDAOTest.setUp( RecordDAOTest.java:35)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Nativ e Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknow n Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Un known Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.junit.internal.runners.BeforeAndAfterRunner.in vokeMethod(BeforeAndAfterRunner.java:74)
at org.junit.internal.runners.BeforeAndAfterRunner.ru nBefores(BeforeAndAfterRunner.java:50)
at org.junit.internal.runners.BeforeAndAfterRunner.ru nProtected(BeforeAndAfterRunner.java:33)
at org.junit.internal.runners.TestMethodRunner.runMet hod(TestMethodRunner.java:75)
at org.junit.internal.runners.TestMethodRunner.run(Te stMethodRunner.java:45)
at org.junit.internal.runners.TestClassMethodsRunner. invokeTestMethod(TestClassMethodsRunner.java:66)
at org.junit.internal.runners.TestClassMethodsRunner. run(TestClassMethodsRunner.java:35)
at org.junit.internal.runners.TestClassRunner$1.runUn protected(TestClassRunner.java:42)
at org.junit.internal.runners.BeforeAndAfterRunner.ru nProtected(BeforeAndAfterRunner.java:34)
at org.junit.internal.runners.TestClassRunner.run(Tes tClassRunner.java:52)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestR eference.run(JUnit4TestReference.java:38)
at org.eclipse.jdt.internal.junit.runner.TestExecutio n.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRu nner.runTests(RemoteTestRunner.java:460)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRu nner.runTests(RemoteTestRunner.java:673)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRu nner.run(RemoteTestRunner.java:386)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRu nner.main(RemoteTestRunner.java:196)
Caused by: org.xml.sax.SAXParseException: The content of element type "class" must match "(meta*,subselect?,cache?,synchronize*,comment?,tup lizer*,(id|composite-id),discriminator?,natural-id?,(version|timestamp)?,(property|many-to-one|one-to-one|component|dynamic-component|properties|any|map|set|list|bag|idbag|ar ray|primitive-array)*,((join*,subclass*)|joined-subclass*|union-subclass*),loader?,sql-insert?,sql-update?,sql-delete?,filter*,resultset*,(query|sql-query)*)".
at com.sun.org.apache.xerces.internal.util.ErrorHandl erWrapper.createSAXParseException(Unknown Source)
at com.sun.org.apache.xerces.internal.util.ErrorHandl erWrapper.error(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLErrorRe porter.reportError(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLErrorRe porter.reportError(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.dtd.XMLDTD Validator.handleEndElement(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.dtd.XMLDTD Validator.endElement(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumen tFragmentScannerImpl.scanEndElement(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumen tFragmentScannerImpl$FragmentContentDriver.next(Un known Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumen tScannerImpl.next(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocum entScannerImpl.next(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumen tFragmentScannerImpl.scanDocument(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XML11Co nfiguration.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XML11Co nfiguration.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XMLPars er.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.Abstrac tSAXParser.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserI mpl$JAXPSAXParser.parse(Unknown Source)
at org.dom4j.io.SAXReader.read(SAXReader.java:465)
at org.hibernate.cfg.Configuration.addInputStream(Con figuration.java:499)
... 34 more
guoway
Jun 3rd, 2008, 08:28 AM
hah~~I've solved by myself.
why did the expception occur is the <subclass> should've been placed after <property>..
vBulletin® v3.7.3, Copyright ©2000-2008, Jelsoft Enterprises Ltd.