"org.xml.sax.SAXParseException: The content of eleme
异常信息:
Caused by: org.xml.sax.SAXParseException: The content of element type "class" must match"(meta*,subselect?,cache?,synchronize*,comment?,tuplizer*,(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|array|primitive-array)*,((join*,subclass*)|joined-subclass*|union-subclass*),loader?,sql-insert?,sql-update?,sql-delete?,filter*,resultset*,(query|sql-query)*)". 配置文件内容: <?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 package="com.red.bean"> <class name="TItem" table="t_titem"> <id name="id" column="id" type="integer"> <generator class="increment"></generator> </id> <property name="name" column="name" type="string"/> <discriminator column="category" type="string"/> <property name="manufacturer" column="manufacturer" type="string"/> <subclass name="TDVD" discriminator-value="2"> <property name="regionCode" column="regionCode" type="string"/> </subclass> <subclass name="TBook" discriminator-value="1"> <property name="pageCount" column="pageCount" type="string"/> </subclass> </class> </hibernate-mapping> 原因分析: 在错误信息中有如下内容:
<!ELEMENT class (
meta*, subselect?, cache?, synchronize*, comment?, tuplizer*, (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|array|primitive-array)*, ((join*, loader?, filter*, resultset*, (query|sql-query)* )>
class元素中的子元素必须按照上面定义的顺序排列,否则hibernate在解析*.hbm.xml文件时,就会报上面的错误。
所以,只需要把discriminator放在id之后,property之前就可以了,正确的配置文件应该如下:
<?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 package="com.red.bean"> <class name="TItem" table="t_titem"> <id name="id" column="id" type="integer"> <generator class="increment"></generator> </id> <discriminator column="category" type="string"/> <property name="name" column="name" type="string"/> <property name="manufacturer" column="manufacturer" type="string"/> <subclass name="TDVD" discriminator-value="2"> <property name="regionCode" column="regionCode" type="string"/> </subclass> <subclass name="TBook" discriminator-value="1"> <property name="pageCount" column="pageCount" type="string"/> </subclass> </class> </hibernate-mapping> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |