[問題] Hibernate的entity與表格的對應方式
※狀況概述:
我想請問現在若有一個entity長成以下這樣:
@Entity
@Table(name="STAFF")
public class Staff {
@Id
@Column(name="STAFF_ID")
private int staffId;
@Column(name="STAFF_NAME")
private String staffName;
@Column(name="ADDRESS")
private String address;
@Column(name="CUSTOMER_ID")
@OneToMany(cascade=CascadeType.ALL,mappedBy="Staff")
private TreeSet<Customer> customers = new TreeSet<>();
......
}
意思是一個店員可以服務多個客人,所以用OneToMany來表示
那對應的table,關於CUSTOMERS的部分要如何描述呢?
例如
CREATE TABLE staff(
STAFF_ID number(20) NOT NULL,
STAFF_NAME varchar(45) NOT NULL,
ADDRESS varchar(255),
//要如何描述TreeSet<Customer> customers
PRIMARY KEY (STAFF_ID)
);
又如果是多對一的情形,例如多個客人對一個店員:
@Entity
@Table(name="CUSTOMER")
public class Customer {
@Id
@Column(name="CUSTOMER_ID")
int customerId;
@Column(name="NAME")
String name;
@ManyToOne(cascade=CascadeType.ALL)
@JoinColumn(name="STAFF_ID")
Staff staff;
......
}
那對應的表格又該如何描述呢?
CREATE TABLE customer(
CUSTOMER_ID number(20) NOT NULL,
NAME varchar(45) NOT NULL,
//這邊如何描述staff??
PRIMARY KEY (CUSTOMER_ID)
);
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.167.40.166 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/java/M.1610264855.A.BC2.html
※ lueichun:轉錄至看板 Database 01/10 15:58
→
01/10 16:13,
3年前
, 1F
01/10 16:13, 1F
→
01/10 16:13,
3年前
, 2F
01/10 16:13, 2F
→
01/10 16:26,
3年前
, 3F
01/10 16:26, 3F
→
01/10 16:26,
3年前
, 4F
01/10 16:26, 4F
→
01/10 19:10,
3年前
, 5F
01/10 19:10, 5F
→
01/10 19:13,
3年前
, 6F
01/10 19:13, 6F
→
01/10 19:16,
3年前
, 7F
01/10 19:16, 7F
cascade目前先拿掉
→
01/10 19:19,
3年前
, 8F
01/10 19:19, 8F
mappedBy目前是理解成放外部鍵對應屬性的地方
@JoinColumn理解成放外部鍵欄位的地方
目前是先寫成這樣:
@Entity
@Table(name="CUSTOMER")
public class Customer {
......
@ManyToOne
@JoinColumn(name="STAFF_ID")
Staff staff;
......
}
@Entity
@Table(name="STAFF")
public class Staff {
......
@OneToMany(mappedBy="staff")
private Set<Customer> customers;
......
}
表格:
CUSTOMER:
https://i.imgur.com/RUSle8e.png
啟動Server時可正常啟動且可正常執行persist。
※ 編輯: lueichun (1.167.41.211 臺灣), 01/14/2021 15:21:59
→
01/20 18:26,
3年前
, 9F
01/20 18:26, 9F
→
01/20 18:26,
3年前
, 10F
01/20 18:26, 10F
→
01/20 18:26,
3年前
, 11F
01/20 18:26, 11F
java 近期熱門文章
PTT數位生活區 即時熱門文章