나는 최대 절전 모드에서 많은 관계를 유지하고있다. DB 테이블은 다음과 같습니다최대 절전 모드에서 많은 수의 관계가 조인 테이블 데이터를 삭제합니까?
events(event_id,name)
speaker(speaker_id,name)
event_speaker(event_id,speaker_id)
event.hbm.xml
<set name="speakers" table="event_speakers" cascade="save-update">
<key column="event_id"/>
<many-to-many class="com.manytomany.model.Speaker"/>
</set>
speaker.hbm.xml
<set name="events" table="event_speakers" cascade="save-update">
<key column="speaker_id"/>
<many-to-many class="com.manytomany.model.Event"/>
</set>
내가 Event.java에 .equals 및 해시 방법을 구현하고 Speaker.java
Event.java
내가 그것을 조인에서 삭제되는 이유Hibernate: select this_.event_id as event1_0_0_, this_.event_name as event2_0_0_ from events this_ where this_.event_id=?
Hibernate: select max(speaker_id) from speakers
Hibernate: insert into speakers (speaker_name, speaker_id) values (?, ?)
Hibernate: delete from event_speakers where event_id=?
Hibernate: insert into event_speakers (event_id, elt) values (?, ?)
처럼 실행되는 코드가 최대 절전 위에 실행할 때
@Override
public boolean equals(Object obj) {
// TODO Auto-generated method stub
Event event = (Event)obj;
return this.id == event.id;
}
@Override
public int hashCode() {
// TODO Auto-generated method stub
return (int)id;
}
Speaker.java
여기@Override
public boolean equals(Object obj) {
// TODO Auto-generated method stub
Speaker speaker = (Speaker)obj;
return this.id == speaker.id;
}
@Override
public int hashCode() {
// TODO Auto-generated method stub
return (int)id;
}
내 논리
session.beginTransaction();
Event event = (Event) session.createCriteria(Event.class).add(Restrictions.eq("id", 1L)).uniqueResult();
event.setSpeakers(new HashSet());
Speaker speaker = new Speaker();
speaker.setName("11");
Speaker speaker2 = new Speaker();
speaker2.setName("12");
event.getSpeakers().add(speaker);
event.getSpeakers().add(speaker2);
session.save(event);
session.getTransaction().commit();
입니다 테이블, 내가 조인 테이블에서 삭제하는 대신 새 행을 삽입하고 싶습니다.
무엇이 문제입니까? – Pace
하나의 이벤트는 많은 스피커를 가질 수 있고 하나의 스피커는 많은 이벤트를 가질 수 있습니다. 그래서 나는 새로운 이벤트를 추가 할 때마다 새로운 행을 조인 테이블에 삽입해야합니다. 그러나 기존 이벤트에 새 스피커를 추가하려는 경우 행이 조인 테이블에서 삭제되고 새 스피커로 삽입됩니다. 나는이 테이블을 얻으려면 어떻게하면 되겠습니까? –