Ich habe eine Entität, die einer SQL-Ansicht zugeordnet ist. Ich habe auch ein Spring-Data-Jpa-Repository dafür konfiguriert. Wenn die Anwendung ausgeführt wird, funktioniert alles OK. Das Problem beginnt jedoch, wenn ich versuche, meine Tests auszuführen, die eine speicherinterne H2-Datenbank verwenden. Ich vermute den Grund dafür ist, dass die Ansicht nicht vorhanden ist, wenn H2 startet, und es wird wahrscheinlich als eine unabhängige Entität behandelt, und daher konfiguriert Spring Boot sie als eine unabhängige In-Memory-Tabelle.Wie initialisiere ich eine Ansicht in H2
Die Konfiguration für die H2-Datenbank wie unten ist -
@Bean
public DataSource dataSource() {
return new EmbeddedDatabaseBuilder().setType(EmbeddedDatabaseType.H2).build();
}
Ich habe versucht, die Sichtdefinition in der schema.sql
Datei in den Testressourcenordnern setzen -
CREATE VIEW
my_view
AS
SELECT
column_1,
column_2
FROM
m
INNER JOIN
mu
ON
m.id = mu.m_id
INNER JOIN
u
ON
mu.id = u.mu_id
Allerdings ist es nicht helfen entweder. Also, wenn ich nenne das konfigurierte JPA-Repository in meinen Tests -
public interface MyViewRepository extends JpaRepository<MyView, Long> {}
so -
myViewRepository.findAll()
es gibt eine leere Liste, obwohl ich erstellen alle m
, mu
und u
Einheiten in meinen Tests Verwenden Sie die zugehörigen Repositories vor dieser Suche.
Wie kann ich H2 so konfigurieren, dass es meine Ansichtsdefinition aufnimmt?
Nun, ich wollte eine sauberere Lösung als das. Es wäre großartig gewesen, wenn ich H2 hätte zwingen können, meine Ansichtszuordnung zu erkennen, aber es scheint, dass die Zuordnung einer Entität zur Ansicht nicht funktioniert :(... naja, ich schätze, der Vorteil dieser Ansicht überwiegt diesen einfachen Nachteil. Vielen Dank für Ihre Antwort! –