[英]Getting same object from two views
我有樹模型“cinema”、“cinemaHall”和“seo”,其中“cinema”與@OneToMany 與“cinemaHall”有關系。 此外,“cinema”和“cinemaHall”模型將@OneToOne 與“seo”關聯起來。 問題出在模型 seo 中。 在創建 'cinema' 和 'cinemaHall' 后,我得到了來自 Thymeleaf 的相同 'seo',它與 'cinema' 相關。 但是我需要收到“cinemaHall”的“seo”(例如,id = 2)。 請找到屏幕截圖以供理解。
...
@PutMapping("update/{cinemaId}")
public String updateCinema(@PathVariable("cinemaId") Long cinemaId,
@ModelAttribute("cinema") Cinema cinema,
@ModelAttribute("seo") SEO seo){
cinema.setSeo(seo);
cinemaService.updateCinema(cinema);
return "redirect:/admin/cinemas";
}
...
@PutMapping("edit/{cinemaId}/halls/update/{hallId}")
public String updateCinemaHall(@PathVariable("cinemaId") Long cinemaId,
@PathVariable("hallId") Long hallId,
@ModelAttribute("cinemaHall") CinemaHall cinemaHall,
@ModelAttribute("seo") SEO seo){
cinemaHall.setSeo(seo);
cinemaHallService.updateCinemaHall(cinemaHall);
return "redirect:/admin/cinemas/edit/" + cinemaId;
}
...
...
@OneToMany
@JoinColumn(name="cinema_id", referencedColumnName="id")
private List<CinemaHall> cinemaHallList = new ArrayList<>();
@OneToOne(cascade = CascadeType.ALL, orphanRemoval = true)
@JoinColumn(name = "seo_id")
private SEO seo;
...
...
@OneToOne(cascade = CascadeType.ALL, orphanRemoval = true)
@JoinColumn(name = "seo_id")
private SEO seo;
...
@Getter
@Setter
@NoArgsConstructor
@Entity
@Table(name = "seo")
public class SEO extends MappedEntity {
@Column
private String url;
@Column
private String title;
@Column
private String keywords;
@Column(name = "seo_description")
private String seoDescription;
}
例如,在創建 Cinema(id=1) 和 seo(id=1) 之后,我正在嘗試創建 CinemaHall(id=1) 而 seo(id=2) 也已成功創建,但是在應用保存 CinemaHall 的操作之后我收到了 id=1 的 seo 和來自 id=2 的字段。 看看seo id=1,但應該是id=2
我不確定這是問題,但在三個模型類中的cascade = CascadeType.ALL
用法上有機會。
如果您在 Cinema 和 seo 以及 CinemaHall 和 seo 之間有一對一的映射,則您不需要 Cinema 和 CinemaHall 之間的一對多映射。
只需使用一對一映射,這應該可以解決您的問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.