首页 > 解决方案 > JPA HBM2DDL 创建无效的外键约束

问题描述

我遇到了 JPA 和 Hibernate 的问题。我有 2 节课(实际上更多,但那些是让我头疼的 2 节课)。它们具有 OneToMany/ManyToOne 关系,并且我已在 OneToMany 上指定我希望它级联所有可能的更改 (CascadeType.ALL)。

但是,当我让 HBM2DDL 在“更新”模式下运行时,它会创建不符合我想要实现的外键约束。它在 RESTRICT 模式下创建一个约束,这绝对不是我指定的。也许错误在我的代码中?我在下面加入了它。

@Entity
public class Department {
@Id
@Column(name = "id", nullable = false)
private int id;
@Column(name = "name", nullable = false)
private String name;
@OneToMany(mappedBy = "departmentByDepartment", cascade = CascadeType.ALL)
private Collection<Article> productsById;
@OneToMany(mappedBy = "departmentByDepartment", cascade = CascadeType.ALL)
private Collection<User> usersById;

接着 :

@Entity
@Table(name = "product", schema = "qlog_project", catalog = "")
public class Article {
@Id
@Column(name = "id", nullable = false)
private int id;
@Column(name = "name", nullable = false)
private String name;
@Column(name = "description", nullable = false)
private String description;
@Column(name = "price", nullable = false)
private double price;
@Column(name = "image", nullable = false)
private String image;
@ManyToOne
@JoinColumn(name = "department", referencedColumnName = "id", nullable = false)
private Department departmentByDepartment;
@OneToMany(mappedBy = "productByProductId", cascade = CascadeType.ALL)
private Collection<Stock> stocksById;

此外,我似乎无法使用 EntityManager.remove() 删除 Article 实例。它不产生任何查询,也不做任何事情。也许它是链接的?提前致谢, 问候

标签: javahibernatejpa

解决方案


推荐阅读