Bạn có thể thực hiện một Embedded class
, trong đó có hai phím của bạn, và sau đó có một tham chiếu đến lớp đó như EmbeddedId
trong Entity
của bạn.
Bạn sẽ cần chú thích @EmbeddedId
và @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 **/
}
Một cách khác để đạt được nhiệm vụ này là sử dụng @IdClass
chú thích, và để cả hai bạn id
trong IdClass
đó. Bây giờ bạn có thể sử dụng bình thường @Id
chú thích trên cả các thuộc tính
@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;
}
Nguồn
2012-10-23 14:42:10
Có thể sử dụng '@ Generatedvalue' cho Id của EmbeddedId – Kayser
@Kayser không. Theo như tôi biết. Không. Bạn phải đặt giá trị cho chúng trong cá thể KeyClass của bạn một cách rõ ràng, và sau đó thiết lập cá thể lớp khóa đó trong thực thể của bạn. –
@Kayser. '@ GeneratedValue' chỉ có thể được sử dụng để tạo ra các giá trị khóa cho khóa chính, nó không thể tạo kết hợp cho các phím tổng hợp. –