2010-11-17 25 views
11

¿Puede derivan de la especificación JPA, si @PrimaryKeyJoinColumn(...), que no tiene el insertable y los parámetros que se pueden actualizar, es el mismo queJPA: es @PrimaryKeyJoinColumn (...) lo mismo que @JoinColumn (..., insertable =?, Updatable =?)?

@JoinColumn(..., insertable = false, updatable = false) 

o

@JoinColumn (..., insertable = verdad, actualizable = true)

cuando se utiliza en asociaciones regulares (no-herencia)? ¿Deberían ser intercambiables? ¿En qué se establecen las propiedades insertables y actualizables? ¿Están listos para nada? Nota, sólo estoy focalización del atributo de sólo lectura que tanto (parecen) aplicar ...

me estoy haciendo una excepción en lugar de asignación incompatibles con EclipseLink e Hibernate ...

Aquí está la @PrimaryKeyJoinColumn JavaEE 5 + 6 Javadoc:

PrimaryKeyJoinColumn (JavaEE 5)
PrimaryKeyJoinColumn (JavaEE 6)

Cita:

... y se puede usar en un mapeo de OneToOne en el que la clave principal de la entidad de referencia se usa como clave externa para la entidad a la que se hace referencia.

+0

aún más - si vistazo a la recomendación thir para la fabricación de uno-a-uno relación en diferentes versiones de API: parece que no recomiendan el uso '@ PrimaryKeyJoinColumn' para la creación de relaciones. [java5] (http://docs.oracle.com/javaee/5/api/javax/persistence/OneToOne.html) vs [java6] (http://docs.oracle.com/javaee/6/api /javax/persistence/OneToOne.html) – msangel

Respuesta

13

Sí, los dos son equivalentes.

Nota en JPA 2.0 también se puede añadir una @Id a un mapeo @OneToOne y evitar tener el identificador de atributo básico duplicado por completo.

Ver

de los WikiBooks Java Persistence páginas

+0

Gracias !: "porque ahora tiene dos asignaciones para la misma columna de clave externa debe definir cuál va a ser escrito a la base de datos (que debe ser la básica), por lo que el OneToOne o La clave externa ManyToOne debe definirse como de solo lectura. Esto se hace estableciendo los atributos JoinColumn insertables y actualizables en falso, o usando @PrimaryKeyJoinColumn en lugar de @JoinColumn. " – Kawu

+0

Esto significa que tendrá que presentar un informe de error para EclipseLink, porque el intercambio de @JoinColumn (..., insertable = false, actualizable = false) con @PrimaryKeyJoinColumn (...) lanza MappingExceptions ... – Kawu

+0

el segundo enlace debe ser : http://en.wikibooks.org/wiki/Java_Persistence/OneToOne#Target_Foreign_Keys.2C_Primary_Key_Join_Columns.2C_Cascade_Primary_Keys – Kawu

Cuestiones relacionadas