hibernate忽略级联属性

时间:2012-08-10 14:09:26

标签: database hibernate java-ee annotations cascade

我在我的项目中使用了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;
....
}

我在所有ManyToOne,OneToMany和ManyToMany案例中都有cascade = CascadeType.ALL。 我也尝试添加

@OnDelete(action = OnDeleteAction.CASCADE)

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

就像提到here但没有改变

你帮我解决了这个问题吗?谢谢!

2 个答案:

答案 0 :(得分:1)

我遇到了同样的问题。也许你忘记将孩子添加到父母的集合中。

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

答案 1 :(得分:0)

我认为问题在于您没有使用正确的数据库引擎。 您应该将hibernate dialect指定为:org.hibernate.dialect.MySQLInnoDBDialect而不是MySQLDialect。否则,它将默认为MyISAM,它不支持关系。