Hibernate OnetoMany и ManyToOne выдают исключение - PullRequest
0 голосов
/ 24 марта 2020

Я пытаюсь сделать простые отношения один ко многим, но hibernate выдает ошибку, не знаю, что делать.

Продукт класса:

public class Products {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private long id;

    @ManyToOne()
    @JoinColumn(name = "user_id", foreignKey = @ForeignKey(name = "fk_user"))
    private Users users;

}

и Пользователи класса:

public class Users {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long Id;


    @OneToMany()
    @JoinColumn(name = "product_id", foreignKey = @ForeignKey(name = "fk_product_id"))
    private List<Products> productsList = new ArrayList<>();

}

Я получил сообщение об ошибке: Ошибка выполнения DDL «изменение ограничения отбрасывания продуктов таблицы fk_user» через JDB C Оператор

Ответы [ 2 ]

2 голосов
/ 24 марта 2020

Вот рабочий пример таких отношений:

Класс ящика:

@OneToMany (mappedBy="drawer", fetch = FetchType.LAZY, cascade = CascadeType.REMOVE, orphanRemoval = true)
private Set<Pocket> pockets;

Класс кармана:

@ManyToOne (fetch=FetchType.EAGER)
@JoinColumn(name = "id_drawer", nullable = false)
private Drawer drawer;
1 голос
/ 24 марта 2020

Поскольку внешний ключ находится на дочерней стороне (Products класс), вы можете отбросить его на родительской стороне и сослаться на дочернюю, как на принимающую сторону:

public class Users {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long Id;


    @OneToMany(mappedBy="users")
    private List<Products> productsList = new ArrayList<>();

}
...