Где пользователь приложения может иметь 1 профиль и несколько сообщений,
1 сообщение может быть связано только с 1 пользователем приложения,
AppUser и роль будут связаны между собой многие-ко-многим.
ERD -

AppUser -
@Getter
@Setter
@Entity
@Table(name = "app_user")
public class AppUser {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "username")
private String username;
@Column(name = "email")
private String email;
@JsonManagedReference
@OneToOne(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
@JoinColumn(name = "profile_id")
private Profile profile;
@JsonManagedReference
@OneToMany(mappedBy = "appUser", cascade = CascadeType.ALL, fetch = FetchType.EAGER)
private List
posts = new ArrayList();
@JsonBackReference
@ManyToMany
@JoinTable(
name = "user_role",
joinColumns = @JoinColumn(name = "user_id"),
inverseJoinColumns = @JoinColumn(name = "role_id")
)
private Set roles = new HashSet();
}
Profile -
@Entity
@Table(name = "profile")
public class Profile {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String bio;
}
Post -
@Entity
@Table(name = "post")
public class Post {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String content;
@JsonBackReference
@ManyToOne
@JoinColumn(name = "app_user_id")
private AppUser appUser;
}
Role -
@Getter
@Setter
@Entity
@Table(name = "role")
public class Role {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
@ManyToMany(mappedBy = "roles")
private Set appUsers = new HashSet();
}
Я получаю следующий ответ: данные профиля, сообщений и ролей не извлекаются -
// http://localhost:8080/user/all
[
{
"id": 1,
"username": "john_doe",
"email": "john@gmail.com",
"profile": {
},
"posts": [
{
},
{
}
]
},
{
"id": 2,
"username": "jane_smith",
"email": "jane@gmail.com",
"profile": {
},
"posts": [
{
}
]
}
]
Подробнее здесь: https://stackoverflow.com/questions/790 ... table-data
Мобильная версия