当前位置: 首页 > 知识库问答 >
问题:

如何通过关联链接实体映射两个实体

聂永怡
2023-03-14

我需要记录各种业务,他们的城市和他们在每个城市的分支机构。每个企业可能在不同的城市,在每个城市可能有不同的分支机构。

 Business       City
     \          /
  BusinessID CityID    <<join table has primary keys of Business and City tables
          |
        Branch
BranchID BusinessID CityID
Business Table          
1         
2       
3        

City Table
A
B
C

Join Table
Business_City
1         A
1         B
2         A
3         C

Branch Table
Business City   Branch
1          A      I1
1          A      I2
1          B      I6
2          A      I5
3          C      I3

共有1个答案

伊飞光
2023-03-14

映射应该是这样的:

@Entity
public class Business {
    @Id
    private Long id;

    @OneToMany(mappedBy = "business")
    private Set<Branch> branches = new HashSet<>();
}

@Entity
public class City {
    @Id
    private Long id;

    @OneToMany(mappedBy = "city")
    private Set<Branch> branches = new HashSet<>();
}

@Entity
public class Branch {

    @Id
    private Long id;

    @ManyToOne
    @JoinColumn(name = "business_id")
    private Business business;

    @ManyToOne
    @JoinColumn(name = "city_id")
    private City city;
}

这种中间实体映射比使用@manytomany关联要好,后者可能会生成一些效率较低的SQL查询,并且不允许向链接表添加一些额外的列。

 类似资料:
  • 我有三个表在我的MySQL数据库,看起来像下面这些: 注意:我从那些表中删除了一些定义部分,比如AUTO_INCREMENT,以便使模式更简单。 我的问题是,我需要将这些表映射到实体类,比如和,但我不知道如何管理表中的列,以及如何管理实体中的这些关系。 我的第一个猜测是: 文件 文件 这些实体将生成我需要的三个表,但在表中没有我真正需要的列。把它放在那里很重要。我还可以创建第三个实体,例如,但我不

  • 是否可以在不映射一对多关系的情况下设置级联? 我有两个实体: 和 如果我试图删除一个用户,并且存在该用户的任何记录,那么由于外键的原因,它显然会失败。我想在删除用户之前删除该用户的所有记录。我看到两种选择: > 映射s为关系中的,并设置。 在删除用户之前手动删除它们 有没有第三个选项,如何在用户实体中设置无映射记录的级联?

  • 我尝试使用java Spring映射对象DTO到对象正常 我尝试调用接口映射器,因为服务,但我有NullPointerExctive,似乎接口没有注入服务,我使用自动配置,我退出了这个 服务 制图员 错误 我尝试调试,我看到iUserMapper是空的,我不知道如何调用,因为服务 谢谢!

  • 问题内容: 我有两个表- 一个包含地址,另一个包含照片。它们之间唯一的共同字段是PersonID。这些被映射到两个POJO类Address和Photo。我可以通过创建条件并在字段中添加限制来获取这些表中的详细信息。我们应该如何在两个表上编写联接。是否有可能将结果作为两个对象获得- 地址和照片。 我想做一个左联接,这样我也可以得到没有照片的人的记录。我读过,只有使用hql才有可能,但是也可以使用条件

  • 我希望以以下方式映射实体: 我有一个用户,他买了一辆车(特定的品牌、型号和变体)。 为此,我创建了以下类。 Car.java汽车 CarModel.java 汽车变体.java 最后,用户.java 现在,我的问题是。 在现实生活中,用户可能拥有许多汽车,每辆汽车都有特定的品牌、型号和变体。我想用JPA / Hibernate实现这样的功能。 我可以定义与和的关系。在这种情况下,如果我执行或我最终

  • 但是当我运行应用程序时,我会得到以下异常: