У меня есть родительский класс сущности ( Инструмент ) с тремя детьми ( Stock, Bond, Etf ).Родительский класс также имеет отношение OneToMany с классом ( InstrumentPrice ).Стратегия соединения JPA используется между родительским и дочерним объектами.Если дочерний элемент сохраняется (например, Stock), то запись в Instrument автоматически сохраняется также со всеми общими свойствами.Это отлично работает.Но как создать запись для класса InstrumentPrice ?Нужно ли мне читать Инструмент сущности из БД после сохранения Акций и обновлять Инструмент с помощью InstrumentPrice?
@MappedSuperclass
public abstract class BaseEntity implements Serializable {
@Id
@Column(name = "id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
protected int id;
}
Родительский класс Инструмент
@Entity
@Inheritance(strategy = InheritanceType.JOINED)
@DiscriminatorColumn(name = "instr_type", discriminatorType = DiscriminatorType.STRING, length = 1)
@Table(name = "instrument")
public class Instrument extends BaseEntity {
@Column
private String symbol;
@Column
private String isin;
@Column
private String name;
@Column
private boolean active;
@OneToMany(mappedBy = "instrument", fetch = FetchType.LAZY, cascade = CascadeType.ALL)
private List<InstrumentPrice> instrumentPriceList;
// public getters & setters
....
класс InstrumentPrice
@Entity
@Table(name = "instrumentprice")
public class InstrumentPrice extends BaseEntity {
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "instrument_id", nullable = false)
private Instrument instrument;
@Column
private LocalDate date;
@Column
private double open;
@Column
private double high;
@Column
private double low;
@Column
private double close;
@Column
private long volume;
// public getters & setters
....
дочерний класс акции
@Entity
@DiscriminatorValue("S")
@PrimaryKeyJoinColumn(name = "id")
@Table(name = "stock")
public class Stock extends Instrument {
... fields specific to Stock ...
}