我有“电影”、“cinemaHall”和“seo”的树模型,“电影”有关系@OneToMany到“电影院大厅”。此外,“电影”和“cinemaHall”模特之间的关系是@OneToOne与“seo”。问题出在seo模型上。在创建了“影院”和“cinemaHall”之后,Thymeleaf中同样的“seo”与“影院”有关。但是我需要接收“seo”(例如,id = 2)作为“电影院大厅”。请找到屏幕截图以便理解。
CinemaController.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;
}
...Cinema.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;
...CinemaHall.java
...
@OneToOne(cascade = CascadeType.ALL, orphanRemoval = true)
@JoinColumn(name = "seo_id")
private SEO 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;
}例如,在创建了电影( id=1 )和seo(id=1)之后,我尝试创建cinemaHall(id=1),而seo(id=2)也被成功创建,但是在应用了保存cinemaHall的操作之后,我将使用id=1和类似于id=2. 看看seo,它有id=1,但应该是id=2的字段接收seo。
发布于 2021-10-25 12:07:49
如果你有电影和搜索引擎优化之间的一对一映射,那么你就不需要电影和cinemaHall之间的一对多映射。
只需使用一对一的映射,这将解决您的问题。
发布于 2021-10-23 05:05:17
实际上,您给定的关系不起作用,possibility.because A到B之间的关系很好,而A到C或B到C之间的任何一种关系都是不可能的。
A和B都需要与C的关系,然后不需要A到B,relationship.If B与C有关系,那么A可以从各自的B对象访问C对象。
https://stackoverflow.com/questions/69683996
复制相似问题