嵌入式密钥的 JPA 实体映射
Posted
技术标签:
【中文标题】嵌入式密钥的 JPA 实体映射【英文标题】:JPA entity mapping for embedded key 【发布时间】:2021-05-10 10:29:33 【问题描述】:我在 Spring Boot 应用程序中定义了几个 JPA 实体。
@Entity
public class EntityA
@Id
@Column(name = "id")
private String id
// ...
//....other fields
@Entity
public class EntityB
@EmbeddedId
private MyEmbeddedId id;
// ....other fields
public class MyEmbeddedId
@Column(name = "id_a")
private String idA;
@Column(name = "color")
private String color;
EntityA
是自给自足的,EntityB
有一个复合键,其组成部分是EntityA
的主键(由列id_a
表示)。所以我在这里使用嵌入式密钥功能。 EntityA
和 EntityB
之间存在一对多关系。 EntityA
的一个实例可以映射到EntityB
的多个实例。
现在,我的目标是获取 EntityA
及其所有关联的 EntityB
。
如何进行映射?
【问题讨论】:
【参考方案1】:试试下面的实体映射,
@Entity
public class EntityA
@Id
@Column(name = "id")
private String id
@OneToMany(mappedBy = "myEmbeddedId.idA",
cascade = CascadeType.ALL)
private Set<EntityB> entityB;
// ...
//....other fields
@Entity
public class EntityB
@EmbeddedId
private MyEmbeddedId myEmbeddedId;
// ....other fields
public class MyEmbeddedId
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name="id_a")
private EntityA idA;
@Column(name = "color")
private String color;
当你加载EntityA时,它会加载所有关联的EntityB。
【讨论】:
@Mandroid 配置试过了吗?以上是关于嵌入式密钥的 JPA 实体映射的主要内容,如果未能解决你的问题,请参考以下文章