Как проверить отображение гибернации с помощью отражения? - PullRequest
1 голос
/ 27 февраля 2012

Итак, я понимаю, что это выходит за рамки обычного варианта использования 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.

Любой совет очень ценится !!!

Спасибо!

1 Ответ

2 голосов
/ 27 февраля 2012

Вы можете использовать API отражения для этого. Примерно так:

Class Cls = ... ;
cls.getField("xyz").getAnnotation(ManyToMany.class).mappedBy
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...