-2

私は自分のプロジェクトで休止状態の注釈を使用しています。テーブルを作成しましたが、データベースをチェックするときにカスケードがないことを除いて、すべて問題ありません。ここに私がそれを行う方法の例があります:

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)

ここで述べたように、しかし何も変わっていません

問題を解決するのを手伝ってもらえますか? ありがとう!

4

2 に答える 2

1

私も同じ問題を抱えていました。親のセットに子を追加するのを忘れているかもしれません。

division.getItems().add(item); // <-- That was my mistake.
item.setDivision(division);
于 2012-11-25T16:11:56.987 に答える
0

問題は、正しいデータベース エンジンを使用していないことだと思います。MySQLDialect ではなく、org.hibernate.dialect.MySQLInnoDBDialect として hibernate ダイアレクトを指定する必要があります。それ以外の場合は、リレーションをサポートしない MyISAM がデフォルトになります。

于 2012-08-10T14:28:55.377 に答える