0

データベースに 3 つのテーブルがあります。

ここで開発したスキーマ。

1 人の従業員が複数の会議に参加でき、1 つの会議に複数の従業員が参加できます。

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
}

これは正しいです?3番目のテーブルに挿入する方法がわからないので?

4

2 に答える 2

0

関連付けテーブルにはメイン テーブルの 2 つの外部キー以外の情報がないため、オブジェクトEmployeeMEETING. 問題が発生した場合は、両方向に関連付けることを忘れないでください (つまり、Java では、会議に従業員を追加する場合は、会議をこの従業員に追加し、その逆を行う必要があります)。逆)

(別のトピックについて:クラス名はJava規則の命名を尊重し、Meetingの代わりにする必要がありますMEETING)。

于 2013-03-14T07:44:13.910 に答える
0

3 番目のテーブルに明示的に挿入する必要はありません。Cascade.ALL カスケード レベルで作業しているため、Set of meetings が入力されている Employee を使用した保存/永続呼び出しは、マッピング テーブルに自動保存されます。

于 2013-03-14T11:24:22.817 に答える