mysql - 如何在Entity中建立三个表之间的关系?

标签 mysql hibernate spring-mvc

我对 hibernate 和 spring 非常陌生,无法理解如何建立表之间的关系。我需要存储业务伙伴机器关系数据。即一个业务伙伴拥有多台机器,但一台机器只有一个业务伙伴。下面我提到了表格信息和我的代码。请帮助我,提前感谢所有帮助。

##################业务合作伙伴表####################

 CREATE TABLE `bp_master` (
 `BPId` int(11) NOT NULL,
 `BPName` varchar(100) DEFAULT NULL,
 `BPPrimaryAddress` varchar(45) DEFAULT NULL,
 `BPSecondaryAddress` varchar(45) DEFAULT NULL,
  `BPPrimaryPhoneNum` varchar(45) DEFAULT NULL,
 `BPSecondaryPhoneNum` varchar(45) DEFAULT NULL,
 `BPContactName1` varchar(45) DEFAULT NULL,
 `BPContantName2` varchar(45) DEFAULT NULL,
  `BPContactName3` varchar(45) DEFAULT NULL,
  `BPPrimaryAdminId` varchar(45) NOT NULL,
  `BPStatus` varchar(45) DEFAULT NULL,
   `BPTypeId` int(11) DEFAULT NULL,
   `BPStatusChangeTimeStamp` datetime DEFAULT NULL,
    PRIMARY KEY (`BPId`),
    KEY `BPType_idx` (`BPTypeId`),
    CONSTRAINT `BPType` FOREIGN KEY (`BPTypeId`) REFERENCES `bp_type_master` 
    (`BPTypeId`) ON DELETE NO ACTION ON UPDATE NO ACTION
     ) ENGINE=InnoDB DEFAULT CHARSET=latin1;

##############机器表######################

   CREATE TABLE `machine_master` (
   `MachineId` int(11) NOT NULL,
   `MachineName` varchar(45) DEFAULT NULL,
   `MachineLocation` varchar(45) NOT NULL,
   `MachineAddress` varchar(45) NOT NULL,
   `MachineInstalledDate` datetime DEFAULT NULL,
   `MachineStatus` varchar(45) DEFAULT NULL,
    `MachineStatusChangeTimeStamp` datetime DEFAULT NULL,
   `MachineTypeId` varchar(45) DEFAULT NULL,
    PRIMARY KEY (`MachineId`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;

##################bp_machine_rel 表####################

    CREATE TABLE `bp_machine_rel` (
    `BPId` int(11) DEFAULT NULL,
    `MachineId` int(11) DEFAULT NULL,
    `BPMachineStatus` varchar(45) DEFAULT NULL,
    `BPMachineStatusChangeTimeStamp` datetime DEFAULT NULL,
     UNIQUE KEY `MachineId_UNIQUE` (`MachineId`),
     KEY `BPId_idx` (`BPId`),
      KEY `MachineId_idx` (`MachineId`),
     CONSTRAINT `BPId` FOREIGN KEY (`BPId`) REFERENCES `bp_master` (`BPId`) 
     ON DELETE NO ACTION ON UPDATE NO ACTION,
      CONSTRAINT `MachineId` FOREIGN KEY (`MachineId`) REFERENCES 
     `machine_master` (`MachineId`) ON DELETE NO ACTION ON UPDATE NO ACTION
      ) ENGINE=InnoDB DEFAULT CHARSET=latin1;

enter image description here

   class Machine(){

   @OneToOne
   private BusinessPartner bp;
  }

   class BusinessPartner{
         @OneToMany
        private List<Machine> bpMachines;
    }

最佳答案

正如您所描述的问题:一个业务合作伙伴拥有许多台机器。因此,许多一个业务合作伙伴(如果您想要双向关系)。

@Entity
public class BusinessPartner{
    @OneToMany
    @JoinColumn(name="fk_machine") //machine foreign key is the BusinessPartner table
    private List<Machine> bpMachines;
}

@Entity
public class Machine(){
   @ManyToOne
   private BusinessPartner bp;
}

关于mysql - 如何在Entity中建立三个表之间的关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48823613/

相关文章:

java - Spring-MVC : Failed to import bean definitions from relative location [servlet-context. xml]

java - Spring中使用@Bean的默认bean id是什么?

php - 使用mysql从三个不同的表中呈现php中的数据

mysql - 外键在 MySQL 中不起作用

php - 更新数据库后只有几笔数据变化时,如何重新加载可变数据? (iOS)

mysql - hibernate JPA+mysql : can not disable caching in createNativeQuery

mysql - 对 MySQL 数据库的 JavaBean SQL 查询,仅在 JSF 中显示两倍的结果

java - 外键映射到 Embeddable 类

mysql - 从 Hibernate/MySQL 获取数据性能

java - 为什么 @Getmapping 在某些情况下不起作用?