我有樹模型“cinema”、“cinemaHall”和“seo”,其中“cinema”與@OneToMany 與“cinemaHall”有關系。此外,“cinema”和“cinemaHall”模型將@OneToOne 與“seo”關聯起來。問題出在模型 seo 中。在創建 'cinema' 和 'cinemaHall' 后,我得到了來自 Thymeleaf 的相同 'seo',它與 'cinema' 相關。但是我需要收到“cinemaHall”的“seo”(例如,id = 2)。請找到螢屏截圖以供理解。
影院控制器.java:
...
@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;
}
...
電影院.java
...
@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;
...
電影廳.java
...
@OneToOne(cascade = CascadeType.ALL, orphanRemoval = true)
@JoinColumn(name = "seo_id")
private SEO seo;
...
搜索引擎優化.java
@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
uj5u.com熱心網友回復:
實際上,您給定的關系是行不通的。因為 A 到 B 的關系很好,而 A 到 C 或 B 到 C 任何一種關系都可能,兩者都不可能。
A 和 B 都需要與 C 的關系,則不需要 A 與 B 的關系。如果 B 與 C 有關系,則 A 可以從各自的 B 物件訪問 C 物件。
uj5u.com熱心網友回復:
如果您在 Cinema 和 seo 以及 CinemaHall 和 seo 之間有一對一的映射,則您不需要 Cinema 和 CinemaHall 之間的一對多映射。
只需使用一對一映射,這應該可以解決您的問題。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/336944.html
上一篇:java.lang.NoSuchFieldError:com/fasterxml/jackson/annotation/JsonInclude$Include.USE_DEFAULTS
