Загрузить объект без ассоциаций - PullRequest
2 голосов
/ 31 марта 2019

Допустим, у меня есть следующие сущности и ассоциации:

Сущность A:

@Entity
public class A {

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

@OneToMany(mappedBy = "a", cascade = CascadeType.ALL, orphanRemoval = true)
private List<B> b;

}

Сущность B:

@Entity
public class B {

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

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "a_id")
private A a;

@OneToMany(mappedBy = "b", cascade = CascadeType.ALL, orphanRemoval = true)
private List<C> c;

}

Сущность C:

@Entity
public class C {

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

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "b_id")
private B b;

}

Используя .findAll() метод CrudRepository для сущности A, он будет возвращать каждый A с соответствующими B в списке. Кроме того, каждый B будет иметь каждый из связанных C в списке.

У меня такой вопрос: если я в некоторых случаях хочу загрузить только все A с их B, но я не хочу, чтобы C в B, это было бы возможно? Могу ли я создать собственный запрос для этого или есть другой способ? Надеюсь, понятно, чего я хочу достичь.

1 Ответ

1 голос
/ 31 марта 2019

Я думаю, что ваша проблема в mappedBy значениях в one стороне OneToMany отношений.Значение mappedBy должно быть именем переменной на другой стороне .Таким образом, в ваших случаях вы можете сделать следующее:

  1. В объекте A: изменить mappedBy = "citizen" на mappedBy = "a"
  2. В объекте B: изменить mappedBy = "citizen" на mappedBy = "b"

Я знаю, что сущность a, b, c является лишь примером, но вы должны следовать приведенному выше шаблону при разработке отношений между вашими моделями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...