0

私のHibernateアプリケーションでは、Timetable(親)classtable(子)が彼らのものです。

私の最初の操作は Timetable への挿入であり、この timetable を使用して多くのクラステーブルが挿入されます。一対一の関係のように。

しかし、私は問題に直面しています:最初にタイムテーブルが挿入され、クラステーブルが挿入され、再びタイムテーブルとクラステーブルが挿入されます.........

しかし、私の意図は、1 つの Timetable と Many classtable だけです。

私のコードを聞いてください...タイムテーブルで

@OneToMany(mappedBy = "timetable",cascade={CascadeType.ALL})
    private Set<ClassTableVO> classtable;

そしてClassTable

@ManyToOne(cascade={CascadeType.ALL})
    @JoinColumn(name = "COURSE_TABLE_ID")
    private TimetableVO timetable;

そして、それを削除すると、 Please help me..(cascade={CascadeType.ALL})のような例外が発生します。object references an unsaved transient instance

Edit:

私の休止状態では、JPA EntityManager クラスを使用しています

userDAO.createEvent(timetableVO);//this loop only one time executed 
------
-----
for(---){
userDAO.createClassTable(classTable);
}

上記のメソッドには、2 つのメソッドの両方に 2 行のコードがあります。

entityManager.merge(classTable);//
entityManager.flush();
4

1 に答える 1

0

TimeTableVO.addClassTable(ClassTableVO ct)設定を忘れない場合ClassTableVO.timetable

public void TimeTableVO.addClassTable(ClassTableVO ct){
  if(classtable.add(ct)){
    ct.setTimetable(this);
  }
}

そのため、リンクは正しくセッターであり、Hibernate は保存中にオブジェクトを正しくカスケードすることを知っています

于 2013-08-03T07:13:40.523 に答える