有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java无法使用JPA创建映射实体

A.我有一个实体A,如下所示:

Table - EntityA(id long PK, name varchar)

@Entity @Table
EntityA{
    @Id
    long id;

    String name;
}

B.基于此,我想通过JPA(使用单向映射)获取以下类中的数据:

@Entity @Table
EntityMap{

    long id;

    @OneToOne
    EntityA entity;

    @OneToMany
    List<EntityA> mappedEntity;
} 

C.为了使其暂时有效,我创建了如下实体:

Table - entity_map(id long pk, source_entity_id long FK-EntityA_id, target_entity_id long FK-EntityA_id)

@Entity @Table
EntityMap{

    @Id
    long id;

    @OneToOne
    @JoinColumn(name = "source_entity_id")
    EntityA sourceEntity;

    @ManyToOne
    @JoinColumn(name = "target_entity_id")
    EntityA targetEntity;
}

这是预期的工作,但我需要在#B中解释实体。有什么建议吗


共 (1) 个答案

  1. # 1 楼答案

    @OneToMany关系可以由

    @JoinColumn(name = "entity_map_id")
    @OneToMany
    List<EntityA> mappedEntity;
    

    EntityA表中,需要一个列entity_map_idforeign key (entity_map_id) references EntityMap(id)约束

    如果无法更改EntityA表,则需要一个@JoinTable来执行映射:

    @JoinTable(name = "JOIN_TABLE", joinColumns = {@JoinColumn(name = "MY_ENTITY_MAP_FK")}, inverseJoinColumns = {@JoinColumn(name = "ENTITY_A_FK")})
    @OneToMany
    List<EntityA> mappedEntity;
    

    联接表包含两列ENTITY_A_FKMY_ENTITY_MAP_FK

    create table JOIN_TABLE(
      ENTITY_A_FK integer not null,
      MY_ENTITY_MAP_FK integer not null
    );