Многие для отображения с использованием аннотаций гибернации?

У меня есть 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
}

Это правильно? Потому что я не знаю, как вставить в 3-ю таблицу?


person Thinker    schedule 14.03.2013    source источник
comment
что такое 3-я таблица в любом случае?   -  person RainMaker    schedule 14.03.2013
comment
Пожалуйста, проверьте мою схему БД на sqlfiddle. Ссылка находится в вопросе   -  person Thinker    schedule 14.03.2013


Ответы (2)


Поскольку в вашей ассоциативной таблице содержится не больше информации, чем два внешних ключа ваших основных таблиц, вставка в эту таблицу управляется спящим режимом, когда вы связываете свои объекты Employee и MEETING. Так что для меня ваше сопоставление правильное, если у вас возникнут проблемы, не забудьте связать в обоих направлениях (то есть в java, если вы добавляете сотрудника на встречу, вы должны добавить встречу к этому сотруднику и вице- наоборот)

(В другой теме: имя вашего класса должно соответствовать соглашению об именах Java и быть Meeting вместо MEETING).

person benzonico    schedule 14.03.2013
comment
Но как я получу значение столбца ответа. Я не связал это в моем pojo. - person Thinker; 15.03.2013

Вам не нужно явно вставлять в третью таблицу. Любой вызов сохранения/сохранения с сотрудником, имеющим заполненный набор собраний, приведет к автоматическому сохранению в таблице сопоставления, поскольку вы работаете с каскадным уровнем Cascade.ALL.

person Akhilesh Singh    schedule 14.03.2013