EmbeddedId是Java Persistence API (JPA) 中的注解,用于标识一个实体类的复合主键。当一个实体类的主键由多个属性组成时,可以使用EmbeddedId注解来定义一个嵌入式的复合主键。
在使用@EmbeddedId注解时,如果复合主键类中还包含了额外的字符串属性,JPA会自动将这些属性映射到同一张表中,而不会创建额外的表。
这种情况下,可以使用@AttributeOverrides注解来指定额外字符串属性的映射关系。@AttributeOverrides注解可以用于覆盖嵌入式主键类中属性的映射信息。
示例代码如下:
@Embeddable
public class CompositeKey implements Serializable {
@Column(name = "id1")
private Long id1;
@Column(name = "id2")
private Long id2;
@Column(name = "extra_property")
private String extraProperty;
// 省略构造方法和getter/setter
}
@Entity
public class MyEntity {
@EmbeddedId
@AttributeOverrides({
@AttributeOverride(name = "id1", column = @Column(name = "id1")),
@AttributeOverride(name = "id2", column = @Column(name = "id2")),
@AttributeOverride(name = "extraProperty", column = @Column(name = "extra_property"))
})
private CompositeKey compositeKey;
// 省略其他属性和方法
}
在上述示例中,CompositeKey类是一个嵌入式主键类,包含了id1、id2和extraProperty三个属性。MyEntity类使用@EmbeddedId注解将compositeKey属性标识为复合主键,并使用@AttributeOverrides注解指定了extraProperty属性的映射关系。
这样配置后,JPA会将MyEntity实体类映射到同一张表中,表中包含id1、id2和extra_property三个字段。
腾讯云相关产品和产品介绍链接地址:
领取专属 10元无门槛券
手把手带您无忧上云