繁体   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