Итак, я понимаю, что это выходит за рамки обычного варианта использования Hibernate, но ...
Я использую Java-отражение для заполнения классов DTO, которые сохраняются через Hibernate, с помощью конфигурации аннотаций.
Мне нужно рефлексивно найти атрибут mappedBy отношения @ManyToOne, чтобы установить обратную ссылку от одного ко многим.
Код:
class Router{
@OneToMany(targetEntity = Port.class, cascade = CascadeType.ALL, mapped = "router", fetch = FetchType.LAZY)
Collection<Port> ports;
}
class Port{
@JsonBackReferene
@ManyToOne(cascade = {CascadeType.ALL, fetch = FetchType.LAZY)
Router router;
}
Рефлексивно (и рекурсивно) я заполняю DTO, начиная с маршрутизатора. Когда порт имеет все свои установленные атрибуты (автосогласование и т. Д.), Он возвращается к маршрутизатору для добавления в список портов. Поле Port.router не установлено, потому что я не могу найти способ рефлексивного получения значения @ OneToMany.mappedBy, которое позволило бы мне узнать, какое поле в Port нужно установить для экземпляра Router.
Любой совет очень ценится !!!
Спасибо!