[英]Many to mapping using hibernate annotations?
我的數據庫中有3個表。
我在這里開發了模式。
一名員工可以參加多個會議,並且多個員工可以參加一個會議。
http://sqlfiddle.com/#!4/653a40
我在應用程序中使用了休眠模式。
這是我的情話。
@Entity
@Table(name="emp")
public class Employee
{
@Id
@Column(name="user_id")
@GeneratedValue(strategy=GenerationType.AUTO)
private Long id;
@Column(name="Name")
private String name;
@Column(name="salary")
private String salary;
@ManyToMany(cascade = {CascadeType.ALL})
@JoinTable(name="emp_meeting",
joinColumns={@JoinColumn(name="user_id")},
inverseJoinColumns={@JoinColumn(name="meetingId")})
private Set<MEETING> meetings= new HashSet<MEETING>();
// getter and setter
}
@Entity
@Table(name="MEETING")
public class MEETING{
@Id
@Column(name="meetingId")
@GeneratedValue(strategy=GenerationType.AUTO)
private int mid;
@Column(name="agenda")
private String agenda;
@ManyToMany(mappedBy="meetings")
private Set<Employee> emps= new HashSet<Employee>();
//gettter and setter
}
這個對嗎? 因為我不知道如何插入第三張表?
由於關聯表沒有比主表的兩個外鍵更多的信息,因此在將對象Employee
和MEETING
關聯時,該表中的插入由休眠管理。 因此對我來說,您的映射是正確的,如果遇到問題,請不要忘記雙向關聯(也就是說,在Java中,如果您要將員工添加到會議中,則應將會議添加到該員工,反之,反之亦然
(關於另一個主題:您的類名稱應遵循Java約定命名,並且應使用Meeting
而不是MEETING
)。
您無需在第三個表中明確插入。 當您使用Cascade.ALL級聯級別時,任何與Employee填充了會議集的保存/持久調用都將導致自動保存在映射表中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.