这是问题所在。当我尝试从数据库中删除目录对象时,Hibernate 还会删除所有具有关联类型和流派 ID 的目录对象。例如,如果我要删除 Type.id=1 和 Genre.id=1 的目录,那么 Hibernate 会删除每个具有此类 ID 的目录。任何想法如何解决它?我只需要删除一个 Catalog 对象,而无需删除 id=1 的 Type 和 Genre 对象。
@Entity
@Table(name = "catalog", catalog = "media_store_db")
public class Catalog implements Serializable {
@Id
@Column(name = "id")
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;
@Column(name = "product_name", length = 100)
private String productName;
@ManyToOne(cascade = {CascadeType.ALL})
@JoinColumn(name = "genre_id", referencedColumnName = "genre_id")
private Genre genre;
@ManyToOne(cascade = {CascadeType.ALL})
@JoinColumn(name = "type_id", referencedColumnName = "type_id")
private Type type;
@Entity
@Table(name = "genres", catalog = "media_store_db")
public class Genre implements Serializable {
@Id
@Column(name = "genre_id")
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;
@Column(name = "genre_name")
private String name;
@OneToMany(mappedBy = "genre", cascade = CascadeType.ALL)
Collection<Catalog> catalogs = new ArrayList<Catalog>();
@Entity
@Table(name = "types", catalog = "media_store_db")
public class Type implements Serializable {
@Id
@Column(name = "type_id")
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;
@Column(name = "type_name")
private String name;
@OneToMany(mappedBy = "type", cascade = CascadeType.ALL)
Collection<Catalog> catalogs = new ArrayList<Catalog>();
我删除目录对象的方法
public void deleteCatalog(Integer catalogId) {
Session session = config.getSession();
Transaction tx = session.beginTransaction();
session.delete(session.get(Catalog.class, catalogId));
tx.commit();
session.close();
}