2009-05-21 10 views

risposta

10

Non pensare che Hibernate consenta di mappare una tabella senza una chiave primaria ... pensa a come Hibernate eseguirà gli aggiornamenti senza una colonna che possa identificare in modo univoco una riga.

Immagino che una soluzione sia utilizzare una chiave composita con tutte le colonne, ma è molto meglio aggiungere una chiave primaria.

+0

Penso che tu abbia ragione qui. Anche la chiave composta (di tutte le colonne) dovrebbe ancora essere primaria, quindi è meglio fare una chiave composita più ragionevole o scegliere una colonna identificativa univoca come chiave primaria. –

+7

Non so che sia troppo importante in una situazione di sola lettura (in caso di udpate). – javamonkey79

+4

quindi, quando seleziono da una vista senza una chiave primaria, e non voglio la vista di oupdate cosa devo fare? – DeveloperX

5

Lo farei solo quando stai leggendo i dati (non scriverlo). Quando si dispone di un DB come Oracle, è possibile avere dichiarazioni come

select DOKUMENT.*, ROWID from DOKUMENT 

→ e, quindi, è possibile aggiungere questa affermazione nella mappatura Hibernate:

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

successivamente, si definiscono tutte le altre colonne come

<property... 

Quando si utilizza la procedura guidata di reverse engineering, è possibile

  1. rimuovere il tag composito-chiave,
  2. ricerca e sostituzione chiave immobili per i beni e
  3. inserto di sopra della linea
+0

Dovrai cambiare di conseguenza il tuo codice di inserimento/aggiornamento – ATorras

Problemi correlati