Quiero tener versiones de la misma entrada de datos. En otras palabras, quiero duplicar la entrada con otro número de versión.
id - Version
será la clave principal.
¿Cómo debería verse la entidad? ¿Cómo puedo duplicarlo con otra versión?
id Version ColumnA
1 0 Some data
1 1 Some Other data
2 0 Data 2. Entry
2 1 Data
java
jakarta-ee
jpa
composite-primary-key
Kayser
fuente
fuente
@IdClass
anotación, otro consejo que encontré es que la@Column
anotación debe ir a los campos de la clase Entity (YourEntity
en el código de muestra de RohitJan).Respuestas:
Puede hacer un
Embedded class
, que contiene sus dos claves, y luego tener una referencia a esa clase comoEmbeddedId
en suEntity
.Necesitaría las anotaciones
@EmbeddedId
y@Embeddable
.Otra forma de lograr esta tarea es usar la
@IdClass
anotación y colocar ambosid
en ellaIdClass
. Ahora puede usar la@Id
anotación normal en ambos atributosfuente
@Generatedvalue
para la identificación de por EmbeddedId@GeneratedValue
solo se puede utilizar para generar valores de clave para una clave principal, no puede generar combinaciones para claves compuestas.La clase MyKey debe implementarse
Serializable
si está utilizando@IdClass
fuente
Clase clave:
Clase de entidad:
¿Cómo puedo duplicarlo con otra versión?
Puede separar la entidad que se recuperó del proveedor, cambiar la clave de Entrada y luego conservarla como una nueva entidad.
fuente
AUTOGENERATED
. o algo así@GeneratedValue(strategy = GenerationType.IDENTITY)
hash
yprime
en el métodohashCode
en la claseEntryKey
, me puede decir donde esta idea proviene de?La clase MyKey (@Embeddable) no debe tener relaciones como @ManyToOne
fuente