Ви можете зробити an Embedded class
, який містить два ваші ключі, а потім мати посилання на цей клас, як EmbeddedId
на ваш Entity
.
Вам знадобляться @EmbeddedId
і @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 **/
}
Ще одним способом досягнення цього завдання є використання @IdClass
анотації та розміщення обох id
у цьому IdClass
. Тепер ви можете використовувати звичайну @Id
анотацію щодо обох атрибутів
@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
анотації ще одна підказка, яку я знайшов, - це@Column
примітка, яка повинна перейти до полів класу Entity (YourEntity
у зразковому коді RohitJan).