У меня есть структура сущности:
@Entity
@Table(name = "users")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id", updatable = false, nullable = false)
private Long id;
@OneToMany(fetch = FetchType.LAZY, mappedBy = "user", cascade = { CascadeType.ALL })
List<UserAgreement> userAgreements= new ArrayList<>();
}
@Entity
@Table(name = "user_agreements")
public class UserAgreement {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id", updatable = false, nullable = false)
private Long id;
@ManyToOne(cascade = CascadeType.REFRESH)
@JoinColumn(name = "user_id")
private User user;
@ManyToOne(cascade = CascadeType.REFRESH)
@JoinColumn(name = "agreement_id")
private Agreement agreement;
}
@Entity
@Table(name = "agreements")
public class Agreement {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id", updatable = false, nullable = false)
private Long id;
@OneToMany(fetch = FetchType.LAZY, mappedBy = "agreement", cascade = { CascadeType.ALL })
List<UserAgreement> userAgreements = new ArrayList<>();
}
Я использую Spring Boot с JpaRepository. Когда я использую AgreementRepository extends JpaRepository<Agreement, Long>
для сохранения Соглашения и связанного с ним Соглашения пользователя, оно работает хорошо и каскадирует необходимые поля в БД:
agreement.getUserAgreements().add(new UserAgreement(user, agreement, status));
agreementRepository.save(agreement);
Однако после сохранения, если попытаться получить user.getActiveUserAgreements()
, я получаю пустой список. Это не обновляет.
Как заставить сущность пользователя получить List<UserAgreement>
, который был сохранен с другой стороны?