Отношение JPA OneToOne не извлекает данные целевого объекта OneToMany - PullRequest
0 голосов
/ 09 ноября 2019

Я столкнулся с некоторыми проблемами JPA следующим образом. Есть 4 таблицы следующим образом. Таблица a, Таблица b, Таблица c, Таблица b_c

Мой запрос здесь при чтении объекта A, я получаю данные B и не могу получить данные List cList, и он дает пустой список. Но когда у меня есть прямой вызов get на B, я получаю данные cList. Могу ли я знать, что здесь не так. Моя цель здесь - чтение объекта a, который должен извлечь данные из cList, а также сохранить те же самые отношения ниже.

Я пробовал все возможные варианты, которые я знал, но не повезло.

@Table(name = "a")
public class A {

  @Id
  @Column(name = "id")
  @GeneratedValue(strategy = GenerationType.IDENTITY)
  private Long id;

  @Column(name = "bid")
  private String bid;

  @Column(name = "aid")
  private String aId;

  @OneToOne
  @LazyCollection(LazyCollectionOption.FALSE)
  @JoinColumn(name = "bid", referencedColumnName = "bid",
              insertable = false, updatable = false)
  private B b;
}

@Table(name = "b")
public class B{

  @Id
  @Column(name = "id")
  @GeneratedValue(strategy = GenerationType.IDENTITY)
  private Long id;

  @Column(name = "bid")
  private String bid;

  @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
  @JoinTable(name = "b_c",
      joinColumns = {
          @JoinColumn(name = "bid", referencedColumnName = "bid")},
      inverseJoinColumns = {
          @JoinColumn(name = "cid", referencedColumnName = "cid", unique = true)})
  private List<C> cList;

}


@Table(name = "c")
public class C{

  @Id
  @Column(name = "id")
  @GeneratedValue(strategy = GenerationType.IDENTITY)
  private Long id;

  @Column(name = "cid")
  private String cid;
}

Ожидайтечитать класс A, чтобы получить данные отношения B и B_C, как сказано выше.

...