簡體   English   中英

有很多使用休眠注釋進行映射的嗎?

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

這個對嗎? 因為我不知道如何插入第三張表?

由於關聯表沒有比主表的兩個外鍵更多的信息,因此在將對象EmployeeMEETING關聯時,該表中的插入由休眠管理。 因此對我來說,您的映射是正確的,如果遇到問題,請不要忘記雙向關聯(也就是說,在Java中,如果您要將員工添加到會議中,則應將會議添加到該員工,反之,反之亦然

(關於另一個主題:您的類名稱應遵循Java約定命名,並且應使用Meeting而不是MEETING )。

您無需在第三個表中明確插入。 當您使用Cascade.ALL級聯級別時,任何與Employee填充了會議集的保存/持久調用都將導致自動保存在映射表中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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