Hiberante 类型问题

映射文件extends.hbm.xml如下:

<hibernate-mapping package="com.bjsxt.hibernate">

         <class name="Animal" table="t_animal" lazy="false">

                   <id name="id">

                            <generator class="native"/>

                   </id>

                   <discriminator column="type" type="String"/>

                   <property name="name"/>

                   <property name="sex"/>

                   <subclass name="Pig" discriminator-value="P">

                            <property name="weight"/>

                   </subclass>

                   <subclass name="Bird" discriminator-value="B">

                            <property name="height"/>

                   </subclass>

         </class>

</hibernate-mapping>

 

执行ExportDB后出现下面的错误提示:

Exception in thread "main" org.hibernate.MappingException: Could not determine type for: String, for columns: [org.hibernate.mapping.Column(type)]

         at org.hibernate.mapping.SimpleValue.getType(SimpleValue.java:266)

         at org.hibernate.mapping.Column.getSqlTypeCode(Column.java:138)

         at org.hibernate.mapping.Column.getSqlType(Column.java:182)

         at org.hibernate.mapping.Table.sqlCreateString(Table.java:383)

         at org.hibernate.cfg.Configuration.generateSchemaCreationScript(Configuration.java:779)

         at org.hibernate.tool.hbm2ddl.SchemaExport.<init>(SchemaExport.java:94)

         at org.hibernate.tool.hbm2ddl.SchemaExport.<init>(SchemaExport.java:61)

         at com.bjsxt.hibernate.ExportDB.main(ExportDB.java:13)

 

映射文件extends.hbm.xml修改如下:

<hibernate-mapping package="com.bjsxt.hibernate">

         <class name="Animal" table="t_animal" lazy="false">

                   <id name="id">

                            <generator class="native"/>

                   </id>

                   <discriminator column="type" type="string"/>

                   <property name="name"/>

                   <property name="sex"/>

                   <subclass name="Pig" discriminator-value="P">

                            <property name="weight"/>

                   </subclass>

                   <subclass name="Bird" discriminator-value="B">

                            <property name="height"/>

                   </subclass>

         </class>

</hibernate-mapping>

ExportDB正常导出。分析原因:type指的是hibernate中的类型,不是java中的String类型,必须小写,同样如integer也是要小写。

你可能感兴趣的:(Hiberante 类型问题)