Нет ли способа сделать «одну» стороной владельца отношения «один ко многим»? Каждый отдельный образец имеет mappedBy
в @OneToMany
. Даже ответ this similar question имеет это.Двунаправленный односторонний с одним лицом, владеющим стороной
Я хочу, чтобы одна сторона была стороной-обладателем, потому что, когда я добавляю много/ребенка, я также изменяю некоторую информацию о одном/родительском, и я хочу просто обновить родителя, простоту кода и обеспечить, чтобы все это происходит в той же транзакции ACID.
Но я просто не могу заставить его работать. Hibernate жалуется на
Повторного столбец отображения для объекта
Моих объектов:
public class Parent {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@OneToMany(fetch = EAGER, cascade = {ALL}, orphanRemoval = true)
@JoinColumn(name = "parent_id", referencedColumnName = "id", nullable = false)
private final Set<Child> children = new HashSet<>();
}
public class Child {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@ManyToOne
private Parent parent;
}
Вы частично правы. Мне пришлось заменить 'nullable = false' на' insertable = false, updatable = false' – user384729
@ user384729 Это хороший момент. Включая 'insertable = false, updatable = false', он не запускает дополнительные запросы обновления. –