CRUD-методы для @OneToMany в Spring JPA
У меня есть такие сущности:
SectionOfTheWay- родительскаяLocomotiveSeries- дочерняяLengthCritical,LengthMax,LengthUnified,WeightCritical,WeightPrecinct,WeightUnified- дочерние
А также наследуются от BaseEntity, поскольку все они имеют одинаковые поля.
По сути все эти таблицы составляют одну большую. Я хочу создать insert, update, save методы в моём сервисе.
В интернете видел только такие методы только для одной таблицы, а я хочу, чтобы обновлялись/сохранялось все сразу. К примеру у меня есть метод, который по id удаляет не только в родительской таблице, но и по внешнему ключу все остальные данные для этого id.
Надеюсь, я смог объяснить. Вот мой код:
- Родительская сущность
SectionOfTheWay
@Entity
@Table(name = "sectionoftheway")
public class SectionOfTheWay {
@Id
@Column(name = "id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "name")
private String name;
@OneToMany(mappedBy = "sectionOfTheWay")
private List<LocomotiveSeries> locomotiveSeries;
@OneToMany(mappedBy = "sectionOfTheWay")
private List<WeightCritical> weightСriticals;
@OneToMany(mappedBy = "sectionOfTheWay")
private List <WeightPrecinct> weightPrecincts;
@OneToMany(mappedBy = "sectionOfTheWay")
private List <WeightUnified> weightUnifieds;
@OneToMany(mappedBy = "sectionOfTheWay")
private List <LengthCritical> lengthCriticals;
@OneToMany(mappedBy = "sectionOfTheWay")
private List<LengthMax> lengthMaxes;
@OneToMany(mappedBy = "sectionOfTheWay")
private List<LengthUnified> lengthUnifieds;
}
- Сущность
LocomotiveSeries
@Entity
@Table(name= "locomotiveseries")
public class LocomotiveSeries {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "vl80")
private int vl80;
@Column(name = "vl80vl80")
private int vl80vl80;
@Column(name = "bkg1")
private int bkg1;
@Column(name = "bkg2bkg2")
private int bkg2bkg2;
@Column(name = "twoTE10")
private int twoTE10;
@Column(name = "bkg2")
private int bkg2;
@Column(name = "twoM62")
private int twoM62;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "section_id")
private SectionOfTheWay sectionOfTheWay;
}
- абстрактный класс
BaseEntity, от которого наследуются все остальные
@NoArgsConstructor
@Setter
@MappedSuperclass
public abstract class BaseEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "value1")
private String value1;
@Column(name = "value2")
private String value2;
@Column(name = "value3")
private String value3;
@Column(name = "value4")
private String value4;
@Column(name = "value5")
private String value5;
@Column(name = "value6")
private String value6;
@Column(name = "value7")
private String value7;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "section_id")
private SectionOfTheWay sectionOfTheWay;
public BaseEntity(Long id, String value1, String value2, String value3, String value4, String value5, String value6, String value7, SectionOfTheWay sectionOfTheWay) {
this.id = id;
this.value1 = value1;
this.value2 = value2;
this.value3 = value3;
this.value4 = value4;
this.value5 = value5;
this.value6 = value6;
this.value7 = value7;
this.sectionOfTheWay = sectionOfTheWay;
}
}