public boolean createEntity(Dao dao, Entity<?> en) {
        StringBuilder sb = new StringBuilder("CREATE TABLE " + en.getTableName() + "(");
        // 创建字段
        for (MappingField mf : en.getMappingFields()) {
            if (mf.isReadonly())
                continue;
            sb.append('\n').append(mf.getColumnNameInSql());
            sb.append(' ').append(evalFieldType(mf));
            // 非主键的 @Name，应该加入唯一性约束
            if (mf.isName() && en.getPkType() != PkType.NAME) {
                sb.append(" UNIQUE NOT NULL");
            }
            // 普通字段
            else {
                if (mf.isNotNull() || mf.isPk())
                    sb.append(" NOT NULL");
                if (mf.hasDefaultValue()) {
                    addDefaultValue(sb, mf);
                }
                if (mf.isAutoIncreasement())
                    sb.append(" generated by default as identity ");
                if (mf.isPk() && en.getPks().size() == 1) {
                    sb.append(" primary key ");
                }
            }
            sb.append(',');
        }
        // 结束表字段设置
        sb.setCharAt(sb.length() - 1, ')');

        //指定表空间
        if(en.hasMeta(META_TABLESPACE)){
            sb.append(String.format(" IN %s", en.getMeta(META_TABLESPACE)) );
        }

        // 执行创建语句
        dao.execute(Sqls.create(sb.toString()));

        // 创建联合主键
        if (en.getPks().size() > 1) {
            sb = new StringBuilder();
            sb.append("ALTER TABLE ").append(en.getTableName()).append(" ADD CONSTRAINT PK_");
            sb.append(makePksName(en));
            sb.append(" PRIMARY KEY (");
            for (MappingField mf : en.getPks()) {
                sb.append(mf.getColumnNameInSql()).append(",");
            }
            sb.setCharAt(sb.length() - 1, ')');
            dao.execute(Sqls.create(sb.toString()));
        }

        // 创建关联表
        createRelation(dao, en);
        // 创建索引
        dao.execute(createIndexs(en).toArray(new Sql[0]));
        // 添加注释(表注释与字段注释)
        addComment(dao, en);

        return true;
    }
public boolean createEntity(Dao dao, Entity<?> en) {
        StringBuilder sb = new StringBuilder("CREATE TABLE " + en.getTableName() + "(");
        
        for (MappingField mf : en.getMappingFields()) {
            if (mf.isReadonly())
                continue;
            sb.append('\n').append(mf.getColumnNameInSql());
            sb.append(' ').append(evalFieldType(mf));
            
            if (mf.isName() && en.getPkType() != PkType.NAME) {
                sb.append(" UNIQUE NOT NULL");
            }
            
            else {
                if (mf.isNotNull() || mf.isPk())
                    sb.append(" NOT NULL");
                if (mf.hasDefaultValue()) {
                    addDefaultValue(sb, mf);
                }
                if (mf.isAutoIncreasement())
                    sb.append(" generated by default as identity ");
                if (mf.isPk() && en.getPks().size() == 1) {
                    sb.append(" primary key ");
                }
            }
            sb.append(',');
        }
        
        sb.setCharAt(sb.length() - 1, ')');

        
        if(en.hasMeta(META_TABLESPACE)){
            sb.append(String.format(" IN %s", en.getMeta(META_TABLESPACE)) );
        }

        
        dao.execute(Sqls.create(sb.toString()));

        
        if (en.getPks().size() > 1) {
            sb = new StringBuilder();
            sb.append("ALTER TABLE ").append(en.getTableName()).append(" ADD CONSTRAINT PK_");
            sb.append(makePksName(en));
            sb.append(" PRIMARY KEY (");
            for (MappingField mf : en.getPks()) {
                sb.append(mf.getColumnNameInSql()).append(",");
            }
            sb.setCharAt(sb.length() - 1, ')');
            dao.execute(Sqls.create(sb.toString()));
        }

        
        createRelation(dao, en);
        
        dao.execute(createIndexs(en).toArray(new Sql[0]));
        
        addComment(dao, en);

        return true;
    }
public boolean createEntity ( Dao dao , Entity < ? > en ) { StringBuilder sb = new StringBuilder ( "CREATE TABLE " + en . getTableName ( ) + "(" ) ; // 创建字段 for ( MappingField mf : en . getMappingFields ( ) ) { if ( mf . isReadonly ( ) ) continue ; sb . append ( ' ' ) . append ( mf . getColumnNameInSql ( ) ) ; sb . append ( ' ' ) . append ( evalFieldType ( mf ) ) ; // 非主键的 @Name，应该加入唯一性约束 if ( mf . isName ( ) && en . getPkType ( ) != PkType . NAME ) { sb . append ( " UNIQUE NOT NULL" ) ; } // 普通字段 else { if ( mf . isNotNull ( ) || mf . isPk ( ) ) sb . append ( " NOT NULL" ) ; if ( mf . hasDefaultValue ( ) ) { addDefaultValue ( sb , mf ) ; } if ( mf . isAutoIncreasement ( ) ) sb . append ( " generated by default as identity " ) ; if ( mf . isPk ( ) && en . getPks ( ) . size ( ) == 1 ) { sb . append ( " primary key " ) ; } } sb . append ( ' ' ) ; } // 结束表字段设置 sb . setCharAt ( sb . length ( ) - 1 , ' ' ) ; //指定表空间 if ( en . hasMeta ( META_TABLESPACE ) ) { sb . append ( String . format ( " IN %s" , en . getMeta ( META_TABLESPACE ) ) ) ; } // 执行创建语句 dao . execute ( Sqls . create ( sb . toString ( ) ) ) ; // 创建联合主键 if ( en . getPks ( ) . size ( ) > 1 ) { sb = new StringBuilder ( ) ; sb . append ( "ALTER TABLE " ) . append ( en . getTableName ( ) ) . append ( " ADD CONSTRAINT PK_" ) ; sb . append ( makePksName ( en ) ) ; sb . append ( " PRIMARY KEY (" ) ; for ( MappingField mf : en . getPks ( ) ) { sb . append ( mf . getColumnNameInSql ( ) ) . append ( "," ) ; } sb . setCharAt ( sb . length ( ) - 1 , ' ' ) ; dao . execute ( Sqls . create ( sb . toString ( ) ) ) ; } // 创建关联表 createRelation ( dao , en ) ; // 创建索引 dao . execute ( createIndexs ( en ) . toArray ( new Sql [ 0 ] ) ) ; // 添加注释(表注释与字段注释) addComment ( dao , en ) ; return true ; }
TODO not tested!!
TODO not tested!!