关于继承映射。
User类是基类,DefaultUser类和PowerUser类是子类。
采用整个继承体系一张表来实现。
<hibernate-mapping>
<class name="yscomputer.hibernate0606.hibernate.User" table="User2" catalog="Hibernate06DB">
<id name="id" type="java.lang.Integer">
<column name="Id" />
<generator class="native" />
</id>
<property name="name" type="java.lang.String">
<column name="Name" length="20" />
</property>
<discriminator column="UserType" type="java.lang.String" />
<subclass name="yscomputer.hibernate0606.hibernate.DefaultUser"
descriminator-value="default">
<property name="SomeProperty" type="java.lang.String">
<column name="SomeProperty" length="20" />
</property>
</subclass>
<subclass name="yscomputer.hibernate0606.hibernate.PowerUser"
descriminator-value="power">
<property name="OtherProperty" type="java.lang.String">
<column name="OtherProperty" length="20" />
</property>
</subclass>
</class>
</hibernate-mapping>总提示错误:
Could not parse mapping document from resource yscomputer/hibernate0606/hibernate/User2.hbm.xml
Caused by: org.xml.sax.SAXParseException: Attribute "descriminator-value" must be declared for element type "subclass".目前就定义了一张表User,在User类中没有定义UserType属性。
User类是基类,DefaultUser类和PowerUser类是子类。
采用整个继承体系一张表来实现。
<hibernate-mapping>
<class name="yscomputer.hibernate0606.hibernate.User" table="User2" catalog="Hibernate06DB">
<id name="id" type="java.lang.Integer">
<column name="Id" />
<generator class="native" />
</id>
<property name="name" type="java.lang.String">
<column name="Name" length="20" />
</property>
<discriminator column="UserType" type="java.lang.String" />
<subclass name="yscomputer.hibernate0606.hibernate.DefaultUser"
descriminator-value="default">
<property name="SomeProperty" type="java.lang.String">
<column name="SomeProperty" length="20" />
</property>
</subclass>
<subclass name="yscomputer.hibernate0606.hibernate.PowerUser"
descriminator-value="power">
<property name="OtherProperty" type="java.lang.String">
<column name="OtherProperty" length="20" />
</property>
</subclass>
</class>
</hibernate-mapping>总提示错误:
Could not parse mapping document from resource yscomputer/hibernate0606/hibernate/User2.hbm.xml
Caused by: org.xml.sax.SAXParseException: Attribute "descriminator-value" must be declared for element type "subclass".目前就定义了一张表User,在User类中没有定义UserType属性。
都告诉你怎么设置啦哈, 兄弟.
在<subclass name...> 标签中需要加入一个属性
如<subclass name="Bird" discriminator-value="B">...</...>
<subclass name="Pig" discriminator-value="P">...</...>
也就是说会在数据库中加入一个冗余字段去实现哈