У меня есть две сущности в весенних данных JPA, определенных как USER AND USER_ACTIVITY со следующими отношениями: у каждого пользователя есть много действий.
в моей пользовательской сущности я определен как
@Entity
@Getter
@Setter
@Table(name="user")
@JsonIdentityInfo(generator=ObjectIdGenerators.IntSequenceGenerator.class, property="id")
public class User {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="user_id")
private long id;
@JsonIgnore
@OneToMany(cascade = CascadeType.ALL, orphanRemoval = true, mappedBy = "user")
private List<UserActivity> userActivities;
}
и мой Пользовательская активность дочерней сущности определяется как
@Entity
@Getter
@Setter
@Table(name="user_activity")
@JsonIdentityInfo(generator=ObjectIdGenerators.IntSequenceGenerator.class, property="id")
public class UserActivity {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="id")
private long id;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "user_id")
private User user;
}
Мой репозиторий по активности определяется как
@Repository
public interface UserActivityRepository extends JpaRepository<UserActivity, Long> {
public List<UserActivity> findByActivityDateAndTypeAndUserId(Date dt, String type,
long id);
}
, когда я использую метод findByActivityDateAndTypeAndUserId в репо, я замечаю, что JSON ответ для второго экземпляра не возвращает родителя. Однако первая деятельность как информация пользователя. Каким-то образом ответ усекает родительский объект во второй записи массива. Вот тот же ответ.
0: {
id: 31
activityDate: "2020-01-29"
start: "2020-01-29T20:34:54.000-0500"
end: "2020-01-29T20:34:54.000-0500"
type: "CHECK_IN"
notes: "CHECK_IN"
user: {id: 92, username: "xyz@gmail.com", firstName: "x", y: "m",…}
1: {
id: 32
activityDate: "2020-01-29"
start: "2020-01-29T20:34:55.000-0500"
end: "2020-01-29T20:34:55.000-0500"
type: "CHECK_OUT"
notes: "CHECK_OUT"
user: 2
}
См. Второй элемент в массиве для пользовательского поля, вот в чем проблема. Любая помощь очень ценится в этом. СПАСИБО!