У меня есть 2 человека и адрес объекта. человек является родителем, а адрес - дочерним.JPA обновление родительский ребенок
- лицо: personPK, статус
- Адрес: addressPK, person_fk, статус
Мой репозиторий расширяет JPARepository. personRepository.save(person);
работает нормально для вставки. Но когда я обновляю объект person, обновляя статус (например: Active) в обеих таблицах и использую personRepository.save(person);
Мои ссылки на внешние ключи (person_fk) установлены как null.
Мой родительский класс:
@Entity
@DynamicUpdate
@Table(name = "person")
public class Person {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name="person_pk", nullable=false)
private Long personPK;
@OneToMany(fetch = FetchType.EAGER, mappedBy = "person",cascade = CascadeType.PERSIST)
private Set<Address> addresses = new HashSet<>();
...
}
И мой ребенок класс:
@Entity
@DynamicUpdate
@Table(name = "address")
public class Address {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "address_pk")
private Long addressPK;
@ManyToOne
@JoinColumn(name = "person_fk", referencedColumnName = "person_pk", nullable=false)
private Address address;
...
}
И от моего уровня сервиса Я обновляю его с помощью: personRepostiry.save(person);
Любая помощь, что я делаю Неправильно здесь?
Можете ли вы показать код, где происходит сбой (ваша логика обновление) –
@shadab Я предполагаю, что в вашей сущности 'Address' вам нужен член:' private Person person; 'вместо' private Address address; '? – sanastasiadis
@sanastasiadis Я считаю, что он не разделил полный код, как будто это полный код, который он не смог бы добавить слишком правильно? –