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