JPA HBM2DDL создает недопустимые ограничения внешнего ключа - PullRequest
1 голос
/ 07 января 2020

У меня проблема с 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;

Кроме того, я не могу удалить экземпляр Article с помощью EntityManager.remove (). Он не производит никаких запросов и ничего не делает. Может быть, это связано? Заранее спасибо, С уважением

...