[英]MySQL one-to-many, Java, hibernate
First...sorry for my description...I hope I can be clear.首先......对不起我的描述......我希望我能清楚。 I want to create a project, where I have cars and drivers.我想创建一个项目,我有汽车和司机。 One car can have one driver and one driver can have many cars.一辆车可以有一个司机,一个司机可以有很多辆车。
@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;
[...]
}
and this is the mysql syntax, which i don't understand very clear, if i have one to many relationships, do I need a 3rd table where i have id, carID and driverID for that car?这是 mysql 语法,我不太清楚,如果我有一对多的关系,我是否需要第三张表,其中有该车的 id、carID 和 driverID? sorry for my dummy questions对不起我的假问题
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`)
);
Its completely upto you to decide as both the solution will work.这完全由您决定,因为这两种解决方案都可以工作。
For the current code it will not create a third table but every row of Car table will have a driver value.对于当前代码,它不会创建第三个表,但 Car 表的每一行都会有一个驱动程序值。
But it would be better if you make @ManyToMany as in future it will be easy for you even if the requirement changes and will have separate table.但是,如果您制作 @ManyToMany 会更好,因为将来即使需求发生变化并且会有单独的表格,您也会很容易。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.