java - 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 实例。它不产生任何查询,也不做任何事情。也许它是链接的?提前致谢, 问候
解决方案
推荐阅读
- c# - 如何使两个 foreach 同时“工作”/并行/异步
- environment-variables - 如何通过传递环境属性或部署属性在关键启动时增加 SCDF 任务的堆内存
- kubernetes - kubernetes 杀死比旧的容器?
- github - 从本地文件夹创建一个新的 git repo
- unity3d - 只有在触摸按钮而不是整个屏幕时,枪才应该射击
- javascript - 如果我通过链接更改站点,如何更改组件状态
- django - 根据 django 中的数据库计算自动填充表单中的字段
- php - php中xml的每个节点属性值
- javascript - Angular中的登录和HTTP POST问题
- events - CQRS,ES:如何知道我们是否必须在读取端重新排序/忽略事件?