我對@OneToMany和@ManyToOne註釋存在一些問題。休眠,持久性和@OneToMany以及@ManyToOne註釋問題
我有兩個類Suite和SuiteVersion。 SuiteVersion取決於套件。所以,我在我的代碼實現這一點:
類套房:
@OneToMany(mappedBy = "suite")
@Cascade(CascadeType.DELETE_ORPHAN)
private List<SuiteVersion> listSuiteVersion = new ArrayList<SuiteVersion>();
類SuiteVersion:
@ManyToOne()
@Cascade({org.hibernate.annotations.CascadeType.SAVE_UPDATE})
private Suite suite;
但我有一些問題,當我刪除其套房有SuiteVersion有關。 休眠不Suite.I之前刪除SuiteVersion不知道爲什麼,因爲我已經在我的代碼提到了這一點:
@Cascade(CascadeType.DELETE_ORPHAN)
這是我獲得當我刪除套房日誌:
Hibernate: delete from SUITE where ID_SUITE=? 13 août 2010 09:40:50 org.hibernate.util.JDBCExceptionReporter logExceptions ATTENTION: SQL Error: -8, SQLState: 23504 13 août 2010 09:40:50 org.hibernate.util.JDBCExceptionReporter logExceptions GRAVE: integrity constraint violation: foreign key no action; FK42895651EA304E6 table: SUITE_VERSION
謝謝你提前尋求你的幫助。
最好的問候,
弗洛朗,
P.S:對不起,我的英語我是法國人。
你說得對。當您從集合中刪除關聯的實體時,DELETE_ORPHAN正常工作。 (+1) – 2010-08-13 14:59:06
謝謝,這對我有很大的幫助。但是在我學習你的文章之前,我有理由轉向jpa 2.0。在文章的最後,你會談到處理孤兒的新標準方法。你能解釋我這種處理這個孤兒的新方法嗎? – Delildor 2010-08-13 15:36:22
@Delildor:不客氣。關於使用JPA 2.0的孤兒,請參閱我的更新。 – 2010-08-13 16:17:45