Я пытаюсь реализовать базу данных config, используя MariaDB и Hibernate на Java. Позвольте A быть Человеком, который может иметь B. Лицензии. Каждая лицензия b состоит из списка C (некоторый объект, который содержит строку и целое число).
class A {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
private long id;
@OneToMany(cascade = CascadeType.ALL, orphanRemoval = true)
@JoinColumn(name = "b_id")
List<B> bs;
}
class B {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
@Column(name = "b_id")
private long id;
@OneToMany(cascade = CascadeType.ALL, orphanRemoval = true)
@JoinColumn(name = "c_id")
List<C> bs;
}
class C {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
@Column(name = "c_id")
private long id;
String blabla;
int i;
}
Я могу заставить его сохранить, но не могу обновить его, не оставляя лишних полей при сохранении измененного A (загрузить A из базы данных -> добавить B в Bs A / добавить C в Cs B -> сохранить -> избыточные поля остаются в базе данных).
Как правильно это сделать?
До сих пор я безуспешно пытался использовать @ElementCollection, CascadeType.persist и orphanRemoval = true.