Spring update wpisu z dwóch tabel w relacji one-to-one

0

Witajcie,
mam dwie encje

@Entity
@Data
public class House {

  @Id
  @GeneratedValue(strategy = IDENTITY)
  private Long id;

  private String name;

  @OneToOne(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
  @JoinColumn(name = "address_id")
  private PostalAddress address;
}

oraz

@Entity
@Data
@AllArgsConstructor
@NoArgsConstructor
public class PostalAddress {
  @Id
  @GeneratedValue( strategy = IDENTITY )
  private Long id;

  @NotNull
  @Column(length = 100, nullable = false)
  private String addressLocality;

  @NotNull
  @Column(length = 6, nullable = false)
  private String postalCode;

  @NotNull
  @Column(length = 100, nullable = false)
  private String streetAddress;

}

stworzyłem formularz edycji i controller

  @RequestMapping(value="/edit", method = RequestMethod.POST)
  public String update(@ModelAttribute("house/show") House house) {

    houseRepository.save(house);

    return "redirect:/house/list";
  }

i teraz problem jest taki, że leci UPDATE do tabeli house i INSERT do table postal_address. Napisałem po prostu save(house) bo ustawiłem EAGER i cascade.ALL ale to jest aż tak jednolinijkowo jednak nie jest :(

0

Dla doprecyzowania mój kod dodaje nowy wpis w tabeli adresów i update'uje id adresu w tabeli house

0

No a byś chciał żeby co robił? Jak updejtujesz obiekt i dajesz mu referencję do nie-istniejącego podobiektu, to są dwie opcje:

  1. podobiekt zostaje stworzony
  2. dostajesz error z bazy na twarz, że próbujesz podać referencję do nieistniejącego obiektu
0

OK,
W moim formie w polem hidden przekazuje id domu,
doczytałem, ze muszę jeszcze dodać id adresu w polu hidden i powinno pójść.
Pytanie czy idę dobrą drogą - w sensie poprawna mimo gdybym dzięki temu osiagnął cel?

0

Pomijając kwestie Springa jeden-jeden to jest na ogół zło niekonieczne (na pewno w tym przypadku)
Jeden - jeden jest dobre jak masz "dziedziczenie" czyli tabele mają wspólne kolumny np. załóżmy mamy studenta i pracownika dydaktycznego - każdy "dziedziczy" po osobie

0

Cel - update wpisu.

Scibi92 - zło niekonieczne, rozwiń to proszę.
W mojej aplikacji 6 obiektów posiada adres. Niektóre posiadają ich wiele inne jeden

1 użytkowników online, w tym zalogowanych: 0, gości: 1