[英]MySQL one-to-many, Java, hibernate
首先......對不起我的描述......我希望我能清楚。 我想創建一個項目,我有汽車和司機。 一輛車可以有一個司機,一個司機可以有很多輛車。
@Entity
@Table(name = "car")
public class Car {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "carid")
private int id;
@Column(name = "car_producator")
private String producator;
@Column(name = "car_model")
private String model;
@Column(name = "car_culoare")
private String culoare;
@Column(name = "car_esteInchiriata")
private boolean esteInchiriata;
@ManyToOne(cascade = {CascadeType.PERSIST, CascadeType.MERGE, CascadeType.DETACH, CascadeType.REFRESH})
@JoinColumn(name="driver_id")
private Driver driver;
private int car_soferID;
[...]
}
@Entity
@Table(name = "driver")
public class Driver {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "driver_id")
private int driver_id;
@Column(name = "driver_name")
private String name;
@Column(name = "driver_license")
private String license;
@Column(name = "driver_phonenr")
private String phoneNr;
@OneToMany(mappedBy = "driver", cascade = {CascadeType.PERSIST, CascadeType.MERGE, CascadeType.DETACH, CascadeType.REFRESH})
private List<Car> masini;
[...]
}
這是 mysql 語法,我不太清楚,如果我有一對多的關系,我是否需要第三張表,其中有該車的 id、carID 和 driverID? 對不起我的假問題
CREATE DATABASE IF NOT EXISTS `employee_directory`;
USE `employee_directory`;
DROP TABLE IF EXISTS `driver`;
CREATE TABLE `driver` (
`driver_id` int(11) NOT NULL AUTO_INCREMENT,
`driver_name` varchar(45) DEFAULT NULL,
`driver_license` varchar(45) DEFAULT NULL,
`driver_phonenr` varchar(45) DEFAULT NULL,
PRIMARY KEY (`driver_id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=latin1;
INSERT INTO `driver` VALUES
(1,'Tora1ie','Andrews','leslie@mail@com'),
(2,'Tora2','Baumgarten','emma@mail@com'),
(3,'Tora3i','Gupta','avani@mail@com'),
(4,'Tora4','Petrov','yuri@mail@com'),
(5,'Tora5','Vega','juan@mail@com');
create table `car` (
`carid` int unsigned not null auto_increment,
`driver_id` int unsigned not null,
`car_producator` varchar(45) DEFAULT NULL,
`car_mode` varchar(45) DEFAULT NULL,
`car_culoare` varchar(45) DEFAULT NULL,
TINYINT
`car_esteInchiriata` TINYINT(1) DEFAULT NULL,
index car_driver_index(`driver_id`),
foreign key (`driver_id`) references driver(`driver_id`) on delete cascade,
primary key(`carid`)
);
這完全由您決定,因為這兩種解決方案都可以工作。
對於當前代碼,它不會創建第三個表,但 Car 表的每一行都會有一個驅動程序值。
但是,如果您制作 @ManyToMany 會更好,因為將來即使需求發生變化並且會有單獨的表格,您也會很容易。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.