2つのエンティティカテゴリとパブリケーションがあります。私がここで持っている関係は、すべての出版物がカテゴリーを持っているということです。私は出版レコードを削除すると、このHibernate、外部キー制約が存在する場合に親行を削除します。
create table category(
id INTEGER not null auto_increment,
name varchar(255) not null,
primary key (id)
);
CREATE TABLE PUBLICATION(
ID INTEGER NOT NULL AUTO_INCREMENT,
TITLE varchar(255) NOT NULL,
CONTENT VARCHAR(1000) NOT NULL,
CATEGORY_ID INTEGER NOT NULL,
primary key(ID),
foreign key (CATEGORY_ID) references CATEGORY (ID)
);
とエンティティのような
何かが
package com.java.bricks.entity;
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name="CATEGORY")
public class CategoryEntity implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
@Id
@Column(name="ID")
@GeneratedValue(strategy=GenerationType.AUTO)
public Long categoryId;
@Column(name="NAME")
public String categoryName;
public Long getCategoryId() {
return categoryId;
}
public void setCategoryId(Long categoryId) {
this.categoryId = categoryId;
}
public String getCategoryName() {
return categoryName;
}
public void setCategoryName(String categoryName) {
this.categoryName = categoryName;
}
}
今
package com.java.bricks.entity;
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToOne;
import javax.persistence.Table;
@Entity
@Table(name="PUBLICATION")
public class PublicationEntity implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
@Id
@Column(name="ID")
@GeneratedValue(strategy=GenerationType.AUTO)
private Long publicationId;
@Column(name="TITLE")
private String title;
@Column(name="CONTENT")
private String content;
@OneToOne
@JoinColumn(name="CATEGORY_ID")
private CategoryEntity category;
public Long getPublicationId() {
return publicationId;
}
public void setPublicationId(Long publicationId) {
this.publicationId = publicationId;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public CategoryEntity getCategory() {
return category;
}
public void setCategory(CategoryEntity category) {
this.category = category;
}
}
とカテゴリのエンティティオブジェクト、出版レコードが正常に削除されます。これはうまく動作します。しかし、今私が望むのは、カテゴリレコードを削除するときに、カテゴリレコード(親)とパブリケーションテーブル内のすべての外部キーレコードも削除する必要があるということです。
どうすればいいですか?私はカスケードしました。しかし、私はまだ同じエラーが発生します。
また、外部キーレコードを持っているときにカテゴリを削除する権限をユーザーに与えることは正しいですか?それは、この例で行うことができますかYESの場合
おかげ
あなたがcascade.allを試したとしたら、それをカテゴリまたはパブリケーションに追加しましたか? –
パブリケーションにカスケードを追加しました。カテゴリー内にパブリケーションインスタンスがありません。そこで追加しませんでした。パブリケーション – user641887