Spring один ко многим всегда пуст

У меня есть 2 объекта A и B. Оба связаны через новый объект AB.

public class A {
    // other fields
    @OneToOne(mappedBy = "a")
    private AB ab;
}

public class B {
    // other fields
    @OneToOne(mappedBy = "b")
    private AB ab;
}

public class AB{
    // more fields
    @ManyToOne
    @JoinColumn(name = "a_id")
    private A a;

    @ManyToOne
    @JoinColumn(name = "b_id")
    private B b;
}

Теперь приведенный выше код работает, но когда я пытаюсь добавить связь непосредственно из A в B, мои результаты всегда пусты.

public class A {
    // other fields
    @OneToOne(mappedBy = "a")
    private AB ab;

        @OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
        private Set<B> b;
}

Возможно, для аннотации «один ко многим» требуется атрибут mappedBy (как и другие).

Adrian M. 27.01.2019 07:58

Я пробовал это, но запрос на соединение, который срабатывает, всегда возвращает пустой результат.

Minato Namikaze 27.01.2019 07:59

Я полагаю, вы также пытались сделать Set b присоединяемой колонкой? Дополнительная информация о сущностях в целом может помочь.

Adrian M. 27.01.2019 08:09
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
3
181
1

Ответы 1

Проблема в том, что вы используете @OneToOne с одной стороны и @ManyToOne с другой стороны.

Вы должны использовать @OneToMany в классе A и B. Что вполне логично: если к A можно подключить несколько AB, то в классе A должна быть коллекция AB.

И после того, как вы измените эти аннотации, вы сразу же увидите, что связь между A и B — это @ManyToMany.

Другие вопросы по теме