簡體   English   中英

從兩個視圖獲取相同的對象

[英]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)。 請找到屏幕截圖以供理解。

影院控制器.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

我不確定這是問題,但在三個模型類中的cascade = CascadeType.ALL用法上有機會。

如果您在 Cinema 和 seo 以及 CinemaHall 和 seo 之間有一對一的映射,則您不需要 Cinema 和 CinemaHall 之間的一對多映射。

只需使用一對一映射,這應該可以解決您的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM