CRUD-методы для @OneToMany в Spring JPA

У меня есть такие сущности:

  • SectionOfTheWay - родительская
  • LocomotiveSeries - дочерняя
  • LengthCritical, LengthMax, LengthUnified, WeightCritical, WeightPrecinct, WeightUnified - дочерние

А также наследуются от BaseEntity, поскольку все они имеют одинаковые поля.

По сути все эти таблицы составляют одну большую. Я хочу создать insert, update, save методы в моём сервисе.

В интернете видел только такие методы только для одной таблицы, а я хочу, чтобы обновлялись/сохранялось все сразу. К примеру у меня есть метод, который по id удаляет не только в родительской таблице, но и по внешнему ключу все остальные данные для этого id.

Надеюсь, я смог объяснить. Вот мой код:

  1. Родительская сущность 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;
}
  1. Сущность 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;
}
  1. абстрактный класс 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;
    }
}

Ответы (0 шт):