Hallo,
meine Anwendung greift sowohl auf eine DB2- als auch SQLServer-Datenbank zu. Jetzt möchte ich in beiden Datenbanken auslesen, welche Tabellen und welche Spalten in der jeweiligen Datenbank existieren.
In DB2 mache ich das mittels: "SELECT * FROM syscat.columns;"
und in SQLServer mittels: "SELECT * FROM INFORMATION_SCHEMA.COLUMNS;"
Mit nur einer Datenbank mache ich das bisher folgendermaßen:
In der Klasse "Columns" ist mittels Annotations festgelegt wie die Metadaten-Tabelle heißt und welche Spalten sie hat. Wenn ich jetzt die gleiche Abfrage gegen den SQLServer schicke, heißt die Tabelle ja anders (nicht mehr syscat.columns sondern INFORMATION_SCHEMA.COLUMNS) und ebenso heißen die Spalten anders. Somit kann ich jetzt die Tabelle nicht mehr auf die Klasse "Columns" mappen.
Wie kann ich unabhängig von der Datenbank mittels Hibernate auslesen welche Tabellen und Spalten in der Datenbank existieren und das Ergebnis auf meine Objekte mappen?
meine Anwendung greift sowohl auf eine DB2- als auch SQLServer-Datenbank zu. Jetzt möchte ich in beiden Datenbanken auslesen, welche Tabellen und welche Spalten in der jeweiligen Datenbank existieren.
In DB2 mache ich das mittels: "SELECT * FROM syscat.columns;"
und in SQLServer mittels: "SELECT * FROM INFORMATION_SCHEMA.COLUMNS;"
Mit nur einer Datenbank mache ich das bisher folgendermaßen:
Code:
session.createQuery("FROM Columns").list;
In der Klasse "Columns" ist mittels Annotations festgelegt wie die Metadaten-Tabelle heißt und welche Spalten sie hat. Wenn ich jetzt die gleiche Abfrage gegen den SQLServer schicke, heißt die Tabelle ja anders (nicht mehr syscat.columns sondern INFORMATION_SCHEMA.COLUMNS) und ebenso heißen die Spalten anders. Somit kann ich jetzt die Tabelle nicht mehr auf die Klasse "Columns" mappen.
Wie kann ich unabhängig von der Datenbank mittels Hibernate auslesen welche Tabellen und Spalten in der Datenbank existieren und das Ergebnis auf meine Objekte mappen?