Моя структура классов выглядит следующим образом:
Product.java
@Entity
@Table(name = "products")
@Getter @Setter
public class Product extends BaseEntity {
@Column(name = "name", nullable = false)
protected @NotEmpty String name;
@Column(name = "is_active")
protected Boolean isActive = false;
@Column(name = "price")
protected @NotNull Integer price;
@OneToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL, mappedBy = "product")
protected ProductDetails productDetails;
}
ProductDetails.java
@Entity
@Getter @Setter
public class ProductDetails extends BaseEntity {
@Column(name = "description")
protected String description;
@Column(name = "cuisines")
protected String cuisines;
@OneToOne(fetch = FetchType.LAZY, optional = false)
@JoinColumn(name = "product_id")
protected Product product;
}
Репозитории реализуют CrudReporitory для product и productDetails для обоих.И мой POST-запрос:
{
"isActive": true,
"name": "product4",
"price": 10,
"productDetails" : {
"description": "prod desc 4",
"cuisines": "south, asian"
}
}
, когда вышеупомянутый запрос отправлен, вставьте в значения продуктов (созданный_каталог, обновленный_изображение, is_active, имя, цена) (?,?,?,?,?) И вставьтев значения product_details (create_at, updated_at, cuisines, description, product_id) (?,?,?,?,?)
выполняется, но product_id равен null
в случае запроса 2, который дает мнеошибка как SQLIntegrityConstraintViolationException: Column 'product_id' cannot be null
Как я могу это исправить?