关于Hibernate discriminator标签的问题

Line 发布于 2013/09/03 17:06
阅读 1K+
收藏 0

定义"一棵对象继承树对应一个表"的映射表的时候,对于discriminator标签在xml文件中的位置有什么特殊的要求么? 如果这样子定义的话会报错:

    

<class name="com.line.model.Animal" table="animal">
		<id name="id" column="id">
			<generator class="native"/>
		</id>
		<property name="sex"/>
		<property name="year"/>
		<discriminator type="string" column="type"/>
		<subclass name="com.line.model.Pig" discriminator-value="P">
			<property name="weight"/>
		</subclass>
		<subclass name="com.line.model.Bird" discriminator-value="B">
			<property name="height"/>
		</subclass>
	</class>


17:04:35,598 ERROR XMLHelper:61 - Error parsing XML: XML InputStream(19) 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|dynamiccomponent|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)*)".



只有将<discriminator>标签定义在主键之后才不会报错。
<class name="com.line.model.Animal" table="animal">
		<id name="id" column="id">
			<generator class="native"/>
		</id>
		<!-- 这个标签一定要主键定义之后,其他属性定义之前,不明所以 -->
		<discriminator type="string" column="type"/>
		<property name="sex"/>
		<property name="year"/>
		<subclass name="com.line.model.Pig" discriminator-value="P">
			<property name="weight"/>
		</subclass>
		<subclass name="com.line.model.Bird" discriminator-value="B">
			<property name="height"/>
		</subclass>
	</class>

   求知道原因的牛人给小弟解答一下,谢谢!

加载中
0
王正航
王正航
hibernate-mapping-3.0.dtd里面约定了顺序的,http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd你打开看一下

Line
Line
灰常感谢。菜鸟又学到东西了。
0
Line
Line
为什么老是没人呢
lixiaoquan1987
lixiaoquan1987
!!!!!
返回顶部
顶部