簡體   English   中英

OneToMany雙向關聯示例

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM