-1
は、以下のようにIは、クラスA及びBを有する:休止 - ミラーからCascade.REMOVE(逆)クラス
@Entity
public class A implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer idd;
public Integer getIdd() { return idd; }
public void setIdd(Integer idd) { this.idd = idd; }
@OneToOne(mappedBy="a")
@Cascade(CascadeType.REMOVE)
//@Transient
private B b;
public B getB() { return b; }
public void setB(B b) { this.b = b; }
private int someField;
public int getSomeField() { return someField; }
public void setSomeField(int someField) { this.someField = someField; }
public A(int someField) { this.someField = someField; }
public A() {}
}
これでそう
@Entity
public class B implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;
public Integer getId() { return id; }
public void setId(Integer id) { this.id = id; }
@OneToOne(targetEntity = db.entityClasses.A.class)
@JoinColumn(name = "idd", nullable = true)
private A a;
public A getA() { return a; }
public void setA(A a) { this.a = a; }
private int ssomeField;
public int getSsomeField() { return ssomeField; }
public void setSsomeField(int someField) { this.ssomeField = someField; }
public B() { }
public B(A a, int ssomeField) {
this.a = a;
this.ssomeField = ssomeField;
}
}
、B
は一次元ですA
との1対1の関連付けであり、B
が所有者です。 A
の行を削除するたびに、対応する行B
を削除したいと考えています。 このため、私はA
の削除をカスケードしています。
他のすべて - これらのテーブルへの挿入は、B
に外部キー参照がない場合は常にA
から削除されます。
ただし、行を削除する場合は、id=5
の行にA
とB
という行にFK refがあります。 A
のその行に、私はTEH次のエラーを取得しています:
com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Cannot delete or update a parent row: a foreign key constraint fails (`PrjTEMP`.`b`, CONSTRAINT `FK4253917D0F` FOREIGN KEY (`idd`) REFERENCES `a` (`idd`))
このコードで何が悪いです?
「A」エンティティも削除するjpaコードを投稿してください。 JPA APIまたはHibernate APIを使用していますか? –
@NándorElődFekete - delete()はそれを作成しました - クエリで削除していました。これをansと書くと私は受け入れます。 – Roam