2009-05-21 14 views
10

Mögliche Duplizieren Hibernate Mapping für die Tabelle oder Ansicht zu tun:
Hibernate and no PKwie ohne Primärschlüssel

Jeder weiß, wie Mapping für die Tabelle zu tun, überwintern oder Ansicht ohne Primärschlüssel?

+2

siehe http://stackoverflow.com/questions/767277/hibernate-and-no -pk – Schildmeijer

Antwort

10

Glauben Sie nicht, dass Hibernate das Mappen einer Tabelle ohne Primärschlüssel zulässt ... überlegen Sie, wie Hibernate Aktualisierungen ohne eine Spalte durchführen würde, die eine Zeile eindeutig identifizieren kann.

Ich denke, eine Umgehung wäre, einen zusammengesetzten Schlüssel mit allen Spalten zu verwenden, aber Sie sind viel besser dran, einen Primärschlüssel hinzuzufügen.

+0

Ich denke du bist hier richtig. Außerdem muss der zusammengesetzte Schlüssel (aller Spalten) immer noch primär sein, also sollten Sie einen sinnvolleren zusammengesetzten Schlüssel erstellen oder eine eindeutig identifizierende Spalte als Primärschlüssel auswählen. –

+7

Ich weiß nicht, dass es in einer Nur-Lese-Situation zu viel Bedeutung hat (bei udpates). – javamonkey79

+4

Wenn ich also aus einer Ansicht ohne Primärschlüssel wähle und nicht anzeigen möchte, was soll ich tun? – DeveloperX

5

Ich würde dies nur tun, wenn Sie Daten lesen (nicht schreiben). Wenn Sie eine DB wie Oracle haben, können Sie Aussagen haben wie

select DOKUMENT.*, ROWID from DOKUMENT 

→ und somit können Sie diese Anweisung in die Hibernate Mapping hinzu:

<id column="ROWID" type="string" /> 

anschließend definieren Sie alle anderen Spalten als

<property... 

Wenn Sie das Reverse Engineering-Assistenten können Sie

  1. entfernen Sie den Composite-Schlüsselanhänger,
  2. Suchen und Ersetzen Schlüssel-Immobilien für Immobilien und
  3. Einsatz oberhalb der Linie
+0

Sie müssen Ihren Einfüge-/Aktualisierungscode entsprechend ändern – ATorras

Verwandte Themen