![](/img/trans.png)
[英]Bidirectional OneToMany vs OneToOne association with mappedBy attribute
[英]OneToMany bidirectional association example
我是Hibernate的新手,正在尝试在Person和Vehicle类之间建立一个OneToMany / ManyToOne双向关系。 在我的示例中,一个人可以有很多车辆,而一个车辆仅属于一个人。 我需要一个联接表:PERSON_VEHICLE,PERSON_ID和VEHICLE_ID为列,而VEHICLE表中的PERSON_ID列。 这是我的课堂设计:
人类:
@Entity
public class Person {
@Id
@GeneratedValue
@Column(name = "PERSON_ID")
private int id;
private String name;
@OneToMany(cascade=CascadeType.ALL, mappedBy="person")
private Collection<Vehicle> vehicleList = new ArrayList<>();
车辆类别:
@Entity
public class Vehicle {
@Id
@GeneratedValue
@Column(name = "VEHICLE_ID")
private int id;
private String name;
@ManyToOne
@JoinColumn(name="PERSON_ID")
@JoinTable(name="PERSON_VEHICLE", joinColumns=@JoinColumn(name="VEHICLE_ID"),
inverseJoinColumns=@JoinColumn(name="PERSON_ID"))
private Person person;
这是Hibernate生成的DDL。
create table Person (
PERSON_ID integer not null auto_increment,
name varchar(255),
primary key (PERSON_ID)
)
create table Vehicle (
VEHICLE_ID integer not null auto_increment,
name varchar(255),
primary key (VEHICLE_ID)
)
create table PERSON_VEHICLE (
PERSON_ID integer,
VEHICLE_ID integer not null,
primary key (VEHICLE_ID)
)
alter table PERSON_VEHICLE
add index FK_h3d046x5uvbo53p8ms41hwqx (PERSON_ID),
add constraint FK_h3d046x5uvbo53p8ms41hwqx
foreign key (PERSON_ID)
references Person (PERSON_ID)
alter table PERSON_VEHICLE
add index FK_mtm2mn29hel3lbpl6i526w40v (VEHICLE_ID),
add constraint FK_mtm2mn29hel3lbpl6i526w40v
foreign key (VEHICLE_ID)
references Vehicle (VEHICLE_ID)
VEHICLE表没有PERSON_ID列。 出了点问题,但我找不到问题所在。
oneToMany关系不需要联接表。 仅两个表Person和Vehicle足以实现此映射。 有关详细示例,请参见此示例
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.