У меня есть объект с именем Entity, у которого есть переводы в другой объект LocalizedEntity. Моя проблема заключается в получении их из-за рекурсивной загрузки.
@NamedEntityGraph(name = "employeeTranslations", attributeNodes = @NamedAttributeNode("translations"))
@Entity
@Table(name = "employees")
@Getter
@Setter
@NoArgsConstructor
public class Employee {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
@Column
@NotNull
@NotBlank
@Email
private String email;
@Column
@NotNull
@PositiveOrZero
private int sequence;
@ManyToOne
@NotNull
@JoinColumn(name = "image_id")
private Image image;
@OneToMany(mappedBy = "employee")
@JsonManagedReference
private List<LocalizedEmployee> translations;
@Entity
@Table(name = "localized_employees")
@NoArgsConstructor
@AllArgsConstructor
@Setter
@Getter
public class LocalizedEmployee {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
@ManyToOne
@JoinColumn(name = "language")
private Language language;
@ManyToOne(cascade = CascadeType.PERSIST, fetch = FetchType.EAGER)
@JsonBackReference
private Employee employee;
@Column
@NotNull
@NotBlank
private String name;
@Column
@NotNull
@NotBlank
private String position;
@Column
@NotNull
@NotBlank
private String sneak;
Если я хочу получить только Сотрудник с / без LocalizedEmployee, он работает хорошо из-за аннотаций Джексона @JsonBackReference @JsonManagedReference. Но если я хочу получить LocalizedEmployee, мне нужна информация о свойствах сотрудников.
Результаты API LocalizedEmployee
{
"id": 22,
"language": {
"id": "en"
},
"name": "Jakub Kosiński",
"position": "Specialist",
"sneak": "asdsaddsa"
},
Ожидается
{
"id": 22,
"language": {
"id": "en"
},
"employee": {
...
}
"name": "Jakub Kosiński",
"position": "Specialist",
"sneak": "asdsaddsa"
},