📅  最后修改于: 2023-12-03 15:13:11.634000             🧑  作者: Mango
@EmbeddedId
是一个注解,用于JPA实体类中标记一个属性作为复合主键中的嵌入式主键。嵌入式主键是一个具有多个字段的对象,这些字段与数据库表中属于主键的列对应。通过使用 @EmbeddedId
,可以以面向对象的方式定义复合主键。
下面是一个使用 @EmbeddedId
的示例:
@Entity
@Table(name = "orders")
public class Order {
@EmbeddedId
private OrderId id;
// other fields, constructors, getters and setters
}
在上述示例中,OrderId
类被嵌入到 Order
类中。下面是 OrderId
类的示例:
@Embeddable
public class OrderId implements Serializable {
@Column(name = "customer_id")
private Long customerId;
@Column(name = "order_id")
private Long orderId;
// constructors, getters and setters
}
在上述示例中,OrderId
类使用了 @Embeddable
注解,标记为嵌入式主键。OrderId
类包含两个字段,即 customerId
和 orderId
,分别对应数据库表 orders
中的 customer_id
和 order_id
列。
需要注意的是,嵌入式主键的所有字段都应该是不可变的。这是因为嵌入式主键作为实体的标识符,如果其中的字段被修改,可能会导致实体的标识符变化,从而影响到持久化操作。
@EmbeddedId
是一个非常有用的注解,可以以面向对象的方式定义复合主键。使用嵌入式主键可以使实体类的定义更加清晰简单,提高代码的可读性,是JPA中不可或缺的一部分。