Puede hacer un Embedded class
, que contiene sus dos claves, y luego tener una referencia a esa clase como EmbeddedId
en su Entity
.
Necesitaría las anotaciones @EmbeddedId
y @Embeddable
.
@Entity
public class YourEntity {
@EmbeddedId
private MyKey myKey;
@Column(name = "ColumnA")
private String columnA;
/** Your getters and setters **/
}
@Embeddable
public class MyKey implements Serializable {
@Column(name = "Id", nullable = false)
private int id;
@Column(name = "Version", nullable = false)
private int version;
/** getters and setters **/
}
Otra forma de lograr esta tarea es usar la @IdClass
anotación y colocar ambos id
en ella IdClass
. Ahora puede usar la @Id
anotación normal en ambos atributos
@Entity
@IdClass(MyKey.class)
public class YourEntity {
@Id
private int id;
@Id
private int version;
}
public class MyKey implements Serializable {
private int id;
private int version;
}
@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).