首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从两个视图获取相同的对象

从两个视图获取相同的对象
EN

Stack Overflow用户
提问于 2021-10-22 23:26:33
回答 2查看 71关注 0票数 0

我有“电影”、“cinemaHall”和“seo”的树模型,“电影”有关系@OneToMany到“电影院大厅”。此外,“电影”和“cinemaHall”模特之间的关系是@OneToOne与“seo”。问题出在seo模型上。在创建了“影院”和“cinemaHall”之后,Thymeleaf中同样的“seo”与“影院”有关。但是我需要接收“seo”(例如,id = 2)作为“电影院大厅”。请找到屏幕截图以便理解。

CinemaController.java:

代码语言:javascript
复制
...
@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

代码语言:javascript
复制
...
@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

代码语言:javascript
复制
...
@OneToOne(cascade = CascadeType.ALL, orphanRemoval = true)
    @JoinColumn(name = "seo_id")
    private SEO seo;
...

SEO.java

代码语言:javascript
复制
@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。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-10-25 12:07:49

如果你有电影和搜索引擎优化之间的一对一映射,那么你就不需要电影和cinemaHall之间的一对多映射。

只需使用一对一的映射,这将解决您的问题。

票数 0
EN

Stack Overflow用户

发布于 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对象。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69683996

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档