<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
    <class name="com.lhbn.b2b.model.User" table="test_user" catalog="test">
        <id name="username" type="java.lang.String">
            <column name="username" length="20" />
            <generator class="native"></generator>
        </id>
        <property name="password" type="java.lang.String">
            <column name="password" />
        </property>
    </class>
</hibernate-mapping>
这个配置有什么问题吗?为什么不能自动创建表呢?

解决方案 »

  1.   

    使用下面的代码创建数据表失败
    import org.hibernate.cfg.Configuration;
    import org.hibernate.tool.hbm2ddl.SchemaExport;public class ExportDB { public static void main(String[] args) {

    //读取hibernate.cfg.xml文件
    Configuration cfg = new Configuration().configure();

    SchemaExport export = new SchemaExport(cfg);

    export.create(true, true);
    }
    }
      

  2.   

    运行后控制台是这样的内容
    drop table if exists test_user
    create table test_user (username varchar(50) not null auto_increment, password varchar(255), primary key (username))
    08:04:50,048 ERROR SchemaExport:274 - Unsuccessful: create table test_user (username varchar(50) not null auto_increment, password varchar(255), primary key (username))
    08:04:50,058 ERROR SchemaExport:275 - Incorrect column specifier for column 'username'
      

  3.   

    根据上面的配置创建表的语句为什么会auto_increment 自动增长呢?不明白。是不是native就会自动增长呢?
      

  4.   

    native 使用代理主键 根据底层数据库选择identity 等
    如果要用username做主键用assigned的吧
      

  5.   

    上面的配置是反向工程做的,从表反向生成的配置,我就不明白他怎么就给生成native了。