<hibernate-mapping>
<class name="code.User" table="user" catalog="sample" discriminator-value="not null"> <id name="id" type="java.lang.Integer">
<column name="Id" />
<generator class="identity" />
</id> <property name="age" type="int">
<column name="age" not-null="true" />
</property> <property name="firstname" type="string">
<column name="firstname" length="20" not-null="true" />
</property> <property name="lastname" type="string">
<column name="lastname" length="20" not-null="true" />
</property>
<discriminator column="type" type="int" not-null="true"/> <subclass name="code.AddressUser" discriminator-value="0">
<property name="address" column="address" />
<property name="zipcode" column="zipcode" />
</subclass> <subclass name="code.TelUser" discriminator-value="1">
<property name="tel" column="tel" />
</subclass> </class>
</hibernate-mapping>当我一添加discriminator 就报错The content of element type "class" must match

解决方案 »

  1.   

    贴个示例你看下
    <class name="cn.com.leadfar.oa.model.Party" table="t_party" discriminator-value="X">
    <id name="id">
    <generator class="native"/>
    </id>
    <discriminator column="party_type" type="char"></discriminator>
    <property name="name"/>
    <property name="description"/>
    <many-to-one name="parent" column="pid"/>
    <set name="children" lazy="extra" inverse="true" order-by="id">
    <key column="pid"/>
    <one-to-many class="cn.com.leadfar.oa.model.Party"/>
    <filter name="no_contain_person" condition="party_type != 'P'"></filter>
    </set>
    <subclass name="cn.com.leadfar.oa.model.Company" discriminator-value="C">
    <property name="tel"/>
    <property name="fax"/>
    <property name="address"/>
    <property name="postcode"/>
    <property name="site"/>
    <property name="email"/>
    <property name="industry"/>
    </subclass>
    <subclass name="cn.com.leadfar.oa.model.Department" discriminator-value="D">
    <property name="tel"/>
    <property name="snumber"/>
    </subclass>
    <subclass name="cn.com.leadfar.oa.model.Person" discriminator-value="P">
    <property name="snumber"/>
    <property name="sex"/>
    <property name="phone"/>
    <property name="duty"/>
    <property name="address"/>
    <property name="qq"/>
    <property name="msn"/>
    <property name="email"/>
    <one-to-one name="user"/>
    </subclass>
    <subclass name="cn.com.leadfar.oa.model.Position" discriminator-value="S">
    </subclass>
    </class>
    <filter-def name="no_contain_person"></filter-def>
      

  2.   

    都指明type="int"
    为什么discrimintor-value=""not null"
      

  3.   

    找到原因了,把discriminator放在定义id的后面就可以了