【问题标题】:JPA entity mapping for embedded key嵌入式密钥的 JPA 实体映射
【发布时间】: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 表示)。所以我在这里使用嵌入式密钥功能。 EntityAEntityB 之间存在一对多关系。 EntityA 的一个实例可以映射到EntityB 的多个实例。

现在,我的目标是获取 EntityA 及其所有关联的 EntityB

如何进行映射?

【问题讨论】:

    标签: jpa mapping primary-key


    【解决方案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 配置试过了吗?
    猜你喜欢
    • 2011-07-13
    • 1970-01-01
    • 1970-01-01
    • 2021-09-13
    • 1970-01-01
    • 2011-10-20
    • 2020-03-21
    • 2011-07-25
    • 2015-08-02
    相关资源
    最近更新 更多