2017-06-30 2 views
1

Ich habe einen jooq-Programmcode benutzt, um eine Datenbank zu erzeugen, aber jetzt habe ich ein paar Probleme. In der Datenbank habe ich Tabelle A und B. Das erste Mal hatten alle pojo, dao, interface und so weiter erzeugt. Nach einiger Entwicklung über einen Zeitraum, fand ich, dass die Tabelle A einige Felder hinzufügen oder einige Felder ändern muss, so dass ich erneut Code schreiben müsste und dann wird der vorhandene Code von jooq Code Generator überschrieben, was mich sehr traurig macht. Wenn ich "exclude A" verwende Mit dem Ausschluss einer A-Tabelle wurde festgestellt, dass nur die Daten von Tabelle A generiert wurden und Tabelle B gelöscht wurde. Ich weiß nicht, wie ich mit diesem Problem umgehen soll. Mein Code-Generator ist wie folgt:jooq code generator

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); 
    } 

} 

Antwort

1

Der jOOQ Codegenerator erzeugt immer eine Momentaufnahme Ihres Datenbankschemas zum Zeitpunkt des Code generiert wird. Dies bedeutet, dass jede Tabelle, die nicht erzeugt wird (z. B. wegen der <exclude/> Konfiguration), aus der Generierungsausgabe gelöscht wird. Das ist wichtig, weil Sie die Tabelle auch fallen lassen könnten, was den gleichen Effekt hätte.

so würde ich wieder kodieren und dann Generator jOOQ Code den vorhandenen Code

Sie sollten sich nicht manuell ändern generierten Code zu überschreiben. Stattdessen sollten Sie jedes Mal, wenn Sie eine Spalte in der Datenbank hinzufügen/entfernen, das gesamte Schema neu generieren.