0

Мучаюсь второй день с отношениями в таблице между сущностями. Смысл такой, есть товары с категорией, есть категории товаров. Пытаюсь настроить отношения один ко многим и многие к одному. Запросы к БД нужно генерить с помощью liquibase. Проблема: хочу сделать в сущности товаров внешний ключ (FK) автоинкреминтируемый при добавлении товара, который ссылается на сущность категория товаров(PK). Ловлю null в FK при добавлении товаров. В чем может быть проблема? Entity товаров.

@Entity
@Table(name = "good",schema = "public")
public class Good {
@Id
@GeneratedValue(strategy= GenerationType.IDENTITY)
@Column(name = "id", unique = true)
private Integer id;
@NotNull
@Column(unique = true,name = "name")
private String name;
@Column(name = "price")
private Integer price;
@NotNull
@Column(name = "category_name")
private String category_name;

@ManyToOne
@JoinColumn(name = "categories_id")
private Categories categories;
//геттеры сеттеры, конструктор без аргументов.

Таблица категории товаров:

@Entity
@Table(name = "categories", schema = "public")
public class Categories {
@Id
@GeneratedValue(strategy= GenerationType.IDENTITY)
@Column(name = "id_type")
private Integer id_type;
@NotNull
@Column(name = "type_name", unique = true)
private String type_name;

@OneToMany(mappedBy = "categories", fetch = FetchType.EAGER,cascade = CascadeType.ALL)
private Set<Good> goods = new HashSet<>();
//геттеры сеттеры , конструктор инициализирован/

SQL запрос через liquibase

create table categories
(
id_type   integer generated by default as identity
constraint categories_pkey
primary key,
type_name varchar(40) not null
constraint categories_type_name_key
unique
);

alter table categories
owner to postgre;

create table good
(
id integer generated by default as identity
constraint good_pkey
primary key,
name varchar(40) not null
constraint good_name_key
unique,
price integer,
category_name varchar(40) not null,
categories_id serial
constraint categories_id_fk
references categories
);

alter table good
owner to postgre;

categories_id всегда "null" . Специально ограничение убрал. Что можно подправить.

  • https://ru.stackoverflow.com/q/993198/275232 – Antonio112009 Mar 21 '20 at 21:04
  • Спасибо, но не увидел там вопросов по поводу автогенерации значений для внешнего ключа дочерней таблицы.@Antonio112009 – nedved08 Mar 22 '20 at 12:49
  • В моем случае, я позволяю hibernate самому генерировать таблицы. Вы можете не писать SQL-код для создания таблиц, а использовать hbm2ddl = create. – Antonio112009 Mar 23 '20 at 12:45
  • https://www.onlinetutorialspoint.com/hibernate/hbm2ddl-auto-example-hibernate-xml-config.html – Antonio112009 Mar 23 '20 at 12:45
  • Да, я это понял. Вопрос закрыт. У меня была задача добавлять и редактировать сущности , решается управлением методами через родительскую таблицу. – nedved08 Mar 27 '20 at 17:35

0 Answers0