[問題] Hibernate的entity與表格的對應方式

作者: lueichun (no anonymous)   2021-01-10 15:47:33
※狀況概述:
我想請問現在若有一個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)
);
作者: jej (晃奶大馬桶)   2021-01-10 16:13:00
先問一下你有查cascade的意思嗎?免得到時候其他地方pojo作setting發生超乎你理解的事如果有查的話 你已經寫完了畫張ERD或是class Diagram就可以交差了
作者: ssccg (23)   2021-01-10 19:10:00
你跟relational DB不太熟? one-to-many主表是不會有欄位的是要關聯的表會有個欄位設Foreign key對應主表key欄位先學好RDBMS的基本就不會有這問題,然後看一樓說的cascade是說這樣你是怎麼理解mappedBy和@JoinColumn的用意的?
作者: internetms52 (Oaide)   2021-01-20 18:26:00
呃…不太懂你的問題...如果staff對cust是一對多,cust對staff也是1對多,這兩張表的關係應該是多對多

Links booklink

Contact Us: admin [ a t ] ucptt.com