Вы можете создать 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).