Ich mache ein Datenbankmigrationstool und beschäftige mich mit einer Quellendatenbank, die sehr unhandlich ist. Es ist im Grunde ein riesiger Tisch, der mehr als 40-50 Spalten hat. Aber nicht alle diese Spalten sind nützlich für mich. Ich will nur vielleicht ein Dutzend von ihnen. Sobald ich diese Daten erhalte, mache ich Anfragen an einen Webdienst, der alles am Zielende der Migration abwickelt.Kann ich eine Entität haben, die nur einigen Spalten einer Tabelle entspricht?
Meine Optionen bestehen grundsätzlich darin, Abfragen manuell zu erstellen, um nur die gewünschten Spalten auszuwählen, oder eine Entität zu erstellen, die die gewünschten Spalten abbildet. Ich bin nicht so vertraut mit der Verwendung von JPA, also bin ich mir nicht sicher, ob dies möglich oder in Ordnung ist.
Kann ich etwas tun, wie
@Entity
class SomeEntity{
@Column(name = "ColumnA")
private String columnA;
@Column(name = "ColumnB")
private String columnB;
}
, wenn die Spalten in der Datenbank vorhanden sind, zum Beispiel
Column A | Column B | Column C | Column D
Will Eclipse Karte nur die Spalten I mit Anmerkungen versehen oder es wird versucht, beschwert Spalten zuordnen in die Datenbank zu Feldern, die nicht in meiner Entität existieren? Ich weiß, @Transient wird Felder markieren, die nicht beibehalten werden sollen. Aber ich möchte das Gegenteil tun und Datenbankspalten ignorieren und die Tabelle nur teilweise einer Klasse zuordnen.
Wenn sie schreibgeschützt sind, können Sie Entitäten nur mehrere Spalten zuordnen, kein Problem damit. Abgerufen werden nur die Spalten, die Sie in '@ Entity' deklariert haben. Um sicher zu gehen, sollten Setter "geschützt" werden, um Unveränderbarkeit auf Anwendungsebene zu erzwingen. –
Grundsätzlich ja, aber Sie müssen auf jeden Fall eine '@ Id' (oder gleichwertig) definieren. Es ist nicht erforderlich, eine Ansicht auf Datenbankebene zu erstellen, wie es in der akzeptierten Antwort vorgeschlagen wird. – stg