2012-08-10 181 views
-2

我在我的項目中使用hibernate註釋,我創建了表,它是一切都很好,除了當我檢查數據庫他們的沒有級聯甚至tho我已經確保把它放在類。 這裏是我如何做到這一點的爲例:hibernate忽略級聯屬性

public class Item implements java.io.Serializable { 

/** 
* 
*/ 
private static final long serialVersionUID = 8271695210797279161L; 
@Id 
@GeneratedValue(strategy = GenerationType.AUTO) 
@Column(name = "IDitem", unique = true, nullable = false) 
private int iditem; 
@ManyToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL) 
@JoinColumn(name = "IDDIVISION", nullable = false) 
private Division division; 
@Column(name = "SIGLE", length = 254) 
private String sigleItem; 
@Column(name = "DESCRIPTION", length = 254) 
private String description; 
.... 
} 

我有級聯= CascadeType.ALL在所有多對一,一對多和多對多的情況。 我想還添加

@OnDelete(action = OnDeleteAction.CASCADE) 

@Cascade(org.hibernate.annotations.CascadeType.DELETE_ORPHAN)

喜歡提到here但沒有改變

你可以幫我解決這個問題?謝謝!

+0

嗨,你正在使用什麼數據庫?是MySQL嗎? – 2012-08-10 14:21:03

+0

是的,它是mysql – nouraty 2012-08-10 14:23:33

回答

0

我認爲問題在於您沒有使用正確的數據庫引擎。 您應該將hibernate方言指定爲:org.hibernate.dialect.MySQLInnoDBDialect而不是MySQLDialect。否則,它將默認爲不支持關係的MyISAM。

+0

我改變它,但它聲明給出錯誤,如août10,2012 2:36:47 PM org.hibernate.util.JDBCExceptionReporter logWarnings Avertissement:Unknown table'participants_audit' août10,2012 2:36 :47 PM org.hibernate.util.JDBCExceptionReporter logWarnings Avertissement:SQL警告:1051 SQLSTATE:42S02 AOUT 10日下午2時36分47秒org.hibernate.util.JDBCExceptionReporter logWarnings Avertissement:未知表 'quest_ecarts'。 .. – nouraty 2012-08-10 14:37:05

+0

什麼是錯誤? – 2012-08-10 14:38:02

+0

您是否擁有該類的實體和表格註釋。像@Table(name ='participants_audit')。否則,只有在更改Hibernate方言後纔會出現錯誤? – 2012-08-10 14:58:18

1

我有同樣的問題。也許你忘了將孩子添加到父母的集合中。

division.getItems().add(item); // <-- That was my mistake. 
item.setDivision(division);