2017-06-30 18 views
1

データベースを生成するためにjOOQプログラムコードを使用しましたが、今はいくつか問題があります。データベースにはテーブルAとテーブルBがあります。初めてpojo、dao、interfaceなどが生成されました。ある期間の開発の後、テーブルAはいくつかのフィールドを追加したり、いくつかのフィールドを変更したりする必要があることがわかったので、もう一度コードを作成してから、jOOQコードジェネレータが既存のコードを上書きしてしまいます。 「除外A」を使用すると、A表を除外すると、表Aのデータのみが生成され、表Bは削除されることがわかりました。私はこの問題に対処する方法を知らない。jOOQコードジェネレータ

public class JooqCodegen { 

    public static void main(String[] args) throws Exception { 
     Configuration configuration = new Configuration() 
       .withJdbc(new Jdbc() 
        .withDriver("com.mysql.jdbc.Driver") 
        .withUrl("jdbc:mysql://localhost:3306/microedudb") 
        .withUser("root") 
        .withPassword("root") 
       ) 
       .withGenerator(
         new Generator() 
         .withName("org.jooq.util.JavaGenerator") 
         .withGenerate(new Generate() 
          .withPojos(true) 
          .withImmutablePojos(true) 
          .withInterfaces(true) 
          .withDaos(true) 
          .withSpringAnnotations(true) 
          .withJavaTimeTypes(true) 
         ) 
         .withDatabase(new Database() 
           .withName("org.jooq.util.mysql.MySQLDatabase") 
           //.withIncludes(".*") 
           .withExcludes("A") 
           .withDateAsTimestamp(true) 
           .withInputSchema("microedudb") 
         ) 
         .withTarget(new Target() 
           .withPackageName("com.chunfytseng.microedu.jooq") 
           .withDirectory("src/main/java") 
         ) 
         ); 
      GenerationTool.generate(configuration); 
    } 

} 

答えて

1

j00Qコードジェネレータは、コード生成時に常にデータベーススキーマのスナップショットを生成します。これは、(例えば、<exclude/>構成のために)生成されないテーブルが世代出力から削除されることを意味する。テーブルを落としても同じ効果が得られるので重要です。

ので、私は再び、その後jOOQコードジェネレータは、既存のコード

手動で生成されたコードを変更することはありませんが上書きされますコーディングする必要があるだろう。代わりに、データベースに列を追加/削除するたびに、スキーマ全体を再生成する必要があります。