【问题标题】:How to build relation ship between three tables in Entity?如何在Entity中建立三个表之间的关系?
【发布时间】:2018-02-16 09:26:20
【问题描述】:

我对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;

   class Machine(){

   @OneToOne
   private BusinessPartner bp;
  }

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

【问题讨论】:

    标签: mysql hibernate spring-mvc


    【解决方案1】:

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

    @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;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-18
      • 2019-01-03
      • 1970-01-01
      • 1970-01-01
      • 2020-01-17
      • 1970-01-01
      • 2023-03-29
      相关资源
      最近更新 更多