2009-05-21 100 views

Respuesta

10

No crea que Hibernate permite mapear una tabla sin una clave primaria ... piense en cómo Hibernate realizaría las actualizaciones sin una columna que pueda identificar de manera única una fila.

Supongo que una solución sería utilizar una clave compuesta con todas las columnas, pero es mucho mejor que agregue una clave principal.

+0

Creo que estás en lo correcto aquí. Además, la clave compuesta (de todas las columnas) aún tendría que ser primaria, por lo que es mejor que haga una clave compuesta más razonable o elija una columna de identificación única como clave principal. –

+7

No sé si importa demasiado en una situación de solo lectura (wrt udpates). – javamonkey79

+4

Entonces, cuando selecciono una vista sin una clave principal, y no quiero verla, ¿qué debo hacer? – DeveloperX

5

Haría esto solo cuando está leyendo datos (no los está escribiendo). Cuando se tiene una base de datos como Oracle, puede hacer que declaraciones como

select DOKUMENT.*, ROWID from DOKUMENT 

→ y, por tanto, puede agregar esta declaración en el mapeo de Hibernate:

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

posteriormente, se definen todas las demás columnas como

<property... 

Cuando se utiliza el Asistente para ingeniería inversa, puede

  1. quitar la etiqueta de clave compuesta,
  2. búsqueda y reemplazo clave de la propiedad de la propiedad y
  3. inserción por encima de la línea
+0

Tendrás que cambiar en consecuencia tu código de inserción/actualización – ATorras

Cuestiones relacionadas