2017-07-05 3 views
0

Ich muss eine eingebettete Datenbank einrichten, um meine Testfälle in einem Spring-Boot-Projekt auszuführen.Wie kombinieren Sie mehrere SQL-Dateien mit verschiedenen Trennzeichen in einem EmbeddedDatabaseBuilder?

ich meine SQL-Skripte in zwei Dateien, um verschiedene Separatoren zu setzen für sie getrennt haben:

One enthält meine grundlegende Tabellenskripten (NAME = create-table.sql, SEPARATOR =;) erstellen und die andere enthält die gespeicherten Prozeduren (NAME = gespeicherte Prozeduren.sql,, SEPARATOR = /;).

Per Kommentare zu this post, kann ich verschiedene Separatoren für die beiden SQL-Dateien konfigurieren, indem Sie diese in applicationContext.xml:

<jdbc:initialize-database data-source="mctDBDataSource" ignore-failures="DROPS" >  
    <jdbc:script location="classpath:databaseTesting/inMemory/createInMemoryDatabase.sql" separator=";"/> 
    <jdbc:script location="classpath:databaseTesting/inMemory/createInMemoryDatabaseProcedures.sql" separator="/;"/> 
</jdbc:initialize-database> 

Aber in meinem Fall Ich versuche, die Nicht-XML-Ansatz zu verwenden, wie unten.

public DataSource myDataSource(){ 
    return new EmbeddedDatabaseBuilder().generateUniqueName(true) 
    .setType(EmbeddedDatabaseType.HSQL).addScript("create-table").setSeparator(";").setEncryptEncoding("UTF-8") 
    .ignoreFiledDrops(true).build(); 
} 

Der obige Code funktioniert gut, wenn ich nur eine SQL-Datei verwenden sollte.

Wie kann ich zwei SQL-Dateien mit verschiedenen Trennzeichen kombinieren, um eine DataSource zu erstellen.

tun dies nicht funktioniert:

public DataSource myDataSource(){ 
    return new EmbeddedDatabaseBuilder().generateUniqueName(true) 
    .setType(EmbeddedDatabaseType.HSQL).addScript("create-table") 
    .setSeparator(";").addScript("stored-procedures").setSeparator("/;")setEncryptEncoding("UTF-8") 
    .ignoreFiledDrops(true).build(); 
} 

Antwort

0

Sie es nicht mit einem EmbeddedDatabaseFactor direkt tun können, aber Sie können ein Skript in der EmbeddedDatabaseFactor verwenden und dann einen frischen ResourceDatabasePopulator verwenden Sie das zweite Skript auszuführen auf die Datenbank.

Verwandte Themen