📜  @embeddedid - Java (1)

📅  最后修改于: 2023-12-03 15:13:11.634000             🧑  作者: Mango

@EmbeddedId - Java

概述

@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 类包含两个字段,即 customerIdorderId,分别对应数据库表 orders 中的 customer_idorder_id 列。

需要注意的是,嵌入式主键的所有字段都应该是不可变的。这是因为嵌入式主键作为实体的标识符,如果其中的字段被修改,可能会导致实体的标识符变化,从而影响到持久化操作。

总结

@EmbeddedId 是一个非常有用的注解,可以以面向对象的方式定义复合主键。使用嵌入式主键可以使实体类的定义更加清晰简单,提高代码的可读性,是JPA中不可或缺的一部分。