Spring Boot JPA Релация
Здравейте! От няколко дни се мъча върху ралация в Spring Boot microservice. Таблица products, която има следните полета: name, quantity (броят на продукта наличен в склада), booked, ordered, price. Проблемът е че някои продукти имат подпродукти (не са категории), тоест един продукт (продукт А) има подпродукти (продукт B и C), които са необходими за сглобяването на продукт А. Според мен таблиците би трябвало да изглеждат по следния начин:
Пробвах хиляди неща от интернет примери, клипове, форуми, но никъде няма съчетание между self-relation и m:m релация с допълнителни полета. Имам някакъв написан код за релацията, но тъй като не работи не мисля, че е нужно да го споделям. А това е Product entity:
package ee.profitelgid.book.entities;
import com.fasterxml.jackson.annotation.JsonProperty;
import org.springframework.data.rest.core.annotation.RestResource;
import org.springframework.jmx.export.annotation.ManagedNotification;
import org.springframework.security.access.method.P;
import javax.persistence.*;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.Currency;
import java.util.HashSet;
import java.util.Set;
@Entity
@Table(name = "products")
public class Product {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
private String sku;
private String name;
private BigDecimal price;
@JsonProperty("special_price")
@Column(name = "special_price")
private BigDecimal specialPrice;
private BigInteger quantity;
private BigInteger booked;
private BigInteger ordered;
// constructors, setters and getters
}
В това entity мисля че трябва да има Set от продукти (или допълнително entity, което да се явява релацията между продукти и подпродукти) . Какъв е начинът за постигане на желания резултат? Какви annotations да използвам на полетата, които са ключове за релацията? Благодаря предварително!

Здравей!
Първо благодаря за отговора! Подобна релация е възможно и точно с това започнах.. Явно не си забелязал, че на снимката с релацията има допълнителни 2 полета (quantity и price). Извиняам се, че не написах че това е по-важното за релацията. Разреших проблема - допълнително Entity, което съдържа quantity, price, parent (продукт), child (продукт) и двете полета (parent и child) са ManyToOne, а респективно полетата от Product Entity-то са OneToMany към допълнителното Entity. Двете изисквания за създаване на подобна релация са допълнителното Entity да има EmbeddedId и релациите от него JoinColumn-а да има следните props: insertable = false, updatable = false.
Забелязах, че всичките анотации си ги сложил на методите. Това ли е по-добрата практика от поставянето им на полетата?