У меня есть API-интерфейс SpringBoot REST, в котором один или несколько пользователей являются частью одной или нескольких команд (Equipe), но у них есть роль для каждой команды.
Когда я запрашиваю свой UserRepository.findAll (), Я хотел бы получить все мои пользователи и их команды и роли. Но когда я запрашиваю свой TeamRepository.findAll (), я хотел бы получить информацию обо всех моих командах, их пользователях и их ролях.
Но я не знаю, как получить двунаправленный запрос. Я пробовал с @jsonmanagedreference и @jsonbackreference, но это позволяет мне получать команды только от пользователя, а не наоборот.
В настоящее время у меня есть
[
{
"id": 1,
"prenom": "TestPrenom1",
"nom": "TestNom1",
"roleUserEquipe": []
}
{
"id": 2,
"prenom": "TestPrenom2",
"nom": "TestNom2",
"roleUserEquipe": []
}
]
Но я хочу
[
{
"id": 1,
"prenom": "TestPrenom1",
"nom": "TestNom1",
"roleUserEquipe": [
{
"role": "Role1",
"team": {
"id": 1,
"nom": "Team1"
}
}
]
}
{
"id": 2,
"prenom": "TestPrenom2",
"nom": "TestNom2",
"roleUserEquipe": [
{
"role": "Role2",
"team": {
"nom": "Team1"
}
}
]
}
]
И когда я запрашиваю мои команды, у меня есть
[
{
"id": 1,
"nom": "Team1",
"roleUserEquipe": [
{}
]
},
{
"id": 2,
"nom": "Team2",
"roleUserEquipe": [
{}
]
}
]
Но я бы хотел
[
{
"id": 1,
"nom": "Team1",
"roleUserEquipe": [
{
"role": "Role1",
"user": {
"id": 1,
"prenom": "TestPrenom1",
"nom": "TestNom1",
}
},
{
"role": "Role2",
"user": {
"id": 2,
"prenom": "TestPrenom2",
"nom": "TestNom2",
}
}
]
},
{
"id": 2,
"nom": "Team2",
"roleUserEquipe": []
}
]
Мой пользователь. java
@Entity
@JsonIdentityInfo(generator= ObjectIdGenerators.PropertyGenerator.class, property="id")
public class User implements Serializable {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Integer id;
private String prenom;
private String nom;
@OneToMany(mappedBy = "user", cascade = CascadeType.ALL, fetch = FetchType.EAGER)
private Set<RoleUserEquipe> roleUserEquipe = new HashSet<>();
//GETTERS AND SETTERS AND CONSTRUCTORS
}
My Equipe. java (Team)
@Entity
@JsonIdentityInfo(generator= ObjectIdGenerators.PropertyGenerator.class, property="id")
public class Equipe implements Serializable {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Integer id;
private String nom;
@OneToMany(mappedBy = "equipe", cascade = CascadeType.ALL, fetch = FetchType.EAGER)
private Set<RoleUserEquipe> roleUserEquipe = new HashSet<>();
//GETTERS AND SETTERS AND CONSTRUCTORS
}
My RoleUserEquipe. java
@Entity
public class RoleUserEquipe implements Serializable {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Integer id;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "equipe_id")
private Equipe equipe;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "user_id")
private User user;
private String role;
//GETTERS AND SETTERS AND CONSTRUCTORS
}
EDIT:
При отладке субобъекты в порядке: они содержат значения, которые мне нужны.
Только при возврате ответа JSON они теряют свои значения