Көптеген-көпшіліктен кідірту, бар жолды біріктіру

Мен Көшіріп алудан көпке-көп қарым-қатынас туралы үлгі жобасын көрдім http://www.vaannila.com/hibernate/hibernate-example/hibernate-mapping-many-to-many-using-annotations-1.html Сонда мен студенттің курсына баруды жоспарлап жүрген студенттің қайталану проблемасы болды, бірақ оны бұрынғы сұрақтың ішінен шешті.

Көптеген күйлерді кідірту, бірдей жазбаны қайталайды

Енді менің коды мына сияқты:

    Set courses = new HashSet();
    courses.add(new Course("Science"));
    DB db = new DB();
    Student eswar= db.getStudentFromId(1);
    eswar.setCourses(courses);
    session.saveOrUpdate(eswar);

Сол Студент Эварар бар.

    +------------+--------------+
    | STUDENT_ID | STUDENT_NAME |
    +------------+--------------+
    |          1 | Eswar        |
    |          2 | Joe          |
    +------------+--------------+

Бірақ student_course кестесі COURSE_ID мәніне жаңа мәнмен жаңартылды, бірақ жаңа курс қосылмады.

    +------------+-----------+
    | STUDENT_ID | COURSE_ID |
    +------------+-----------+
    |          1 |         7 | //it was 6 last time
    +------------+-----------+

Мен мұны бұл міндетті түрде көруім керек (сол студент бірнеше курсты жасай алады):

    +------------+-----------+
    | STUDENT_ID | COURSE_ID |
    +------------+-----------+
    |          1 |         6 |
    |          1 |         7 |
    |          2 |         7 |
    +------------+-----------+

Student.Java

@Entity
@Table(name = "STUDENT")
public class Student {

private long studentId;
private String studentName;
private Set courses = new HashSet(0);

public Student() {
}

public Student(String studentName) {
    this.studentName = studentName;
}

public Student(String studentName, Set courses) {
    this.studentName = studentName;
    this.courses = courses;
}

@Id
@GeneratedValue
@Column(name = "STUDENT_ID")
public long getStudentId() {
    return this.studentId;
}

public void setStudentId(long studentId) {
    this.studentId = studentId;
}

@Column(name = "STUDENT_NAME", nullable = false, length = 100)
public String getStudentName() {
    return this.studentName;
}

public void setStudentName(String studentName) {
    this.studentName = studentName;
}

@ManyToMany(cascade = CascadeType.ALL)
@JoinTable(name = "STUDENT_COURSE", joinColumns = { @JoinColumn(name = "STUDENT_ID") }, inverseJoinColumns = { @JoinColumn(name = "COURSE_ID") })
public Set getCourses() {
    return this.courses;
}

public void setCourses(Set courses) {
    this.courses = courses;
}
}

Course.java

@Entity
@Table(name="COURSE")
public class Course {

private long courseId;
private String courseName;

public Course() {
}

public Course(String courseName) {
    this.courseName = courseName;
}

@Id
@GeneratedValue
@Column(name="COURSE_ID")
public long getCourseId() {
    return this.courseId;
}

public void setCourseId(long courseId) {
    this.courseId = courseId;
}

@Column(name="COURSE_NAME", nullable=false)
public String getCourseName() {
    return this.courseName;
}

public void setCourseName(String courseName) {
    this.courseName = courseName;
}

}

Сіздің көмегіңізді шынымен бағалаймын.

0
Аннотацияларыңызды беріңіз
қосылды автор Konstantin Pribluda, көзі
@KonstantinPribluda Мен енді 2 сыныпты қостым.
қосылды автор Tharaka Deshan, көзі

1 жауаптар

Сізге өзіңіздің кодыңыздағы келесі әрекеттерді орындау керек, және ол жұмыс бастайды деп үміттенемін         DB DB = жаңа DB ();

    Student eswar= db.getStudentFromId(1);
    Set c = eswar.getCourses();
    c.add(new Course("Science"));
    eswar.setCourses(c);

    session.saveOrUpdate(eswar);

қазіргі уақытта не істеп жатыр, ол дерекқордан студентті алады, ал оның курсын жаңа жиынға қою керек, бұл жаңа жинақта ескі ескі курс жоқ ........ сондықтан әдіс callSaveOrUpdate() әдісі сол студент жаңа SET арқылы жаңартылды, бірақ бұл жаңа SET ескі жазбаны қамтымайды.

1
қосылды
Рахмет Zohaib, сіз менің мәселені тағы да шештік :)
қосылды автор Tharaka Deshan, көзі
@Zohaib: Сәлеметсіздер ме, менің ұқсас жағдайым бар, менің сұрағым, егер осындай бірнеше салыстырулар бар болса, for_loop_i (db.getStudentFromId (i)) жасауға тиімді ме? Сондай-ақ, сізге көмектесуіңізге болады: stackoverflow.com/questions/25771892/…
қосылды автор PavanSandeep, көзі