Você pode fazer um Embedded class
, que contém suas duas chaves e, em seguida, ter uma referência a essa classe como EmbeddedId
em seu Entity
.
Você precisaria das anotações @EmbeddedId
e @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 **/
}
Outra maneira de realizar esta tarefa é usar @IdClass
anotação e lugar tanto o seu id
naquele IdClass
. Agora você pode usar @Id
anotações normais em ambos os 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
anotação, outra dica que descobri é que a@Column
anotação deve ir para os campos da classe Entity (YourEntity
no código de amostra de RohitJan).