第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

基于子實體屬性的 JPA 查詢

基于子實體屬性的 JPA 查詢

MMTTMM 2023-09-06 17:02:00
我有 4 個實體 MultiPlex、Screen、Screening 和 Movie。我想寫2個查詢。根據(jù)給定 MultiPlexId 的屏幕名稱查找屏幕是否存在。(假設(shè) id 1 的 Multiplex 有 4 個屏幕,Audi-1、Audi-2、Audi-3 和 Audi-4,查詢應(yīng)該能夠找到 id 1 的 Multiplex 中是否存在 Audi-2)查找在給定日期運行給定電影的所有多廳影院(放映有屏幕、電影和日期的參考)我的實體電影:-@Entitypublic class Movie {    @Id    @GeneratedValue(strategy = GenerationType.IDENTITY)    private long id;    private String title;    private double rating;}多重:-@Entitypublic class Multiplex {    @Id    @GeneratedValue(strategy = GenerationType.IDENTITY)    private long id;    private String name;    @OneToMany(mappedBy = "multiplex", cascade = CascadeType.ALL)    private List<Screen> screens;}屏幕:-@Entitypublic class Screen {    @Id    @GeneratedValue(strategy = GenerationType.IDENTITY)    private long id;    private String name;    @ManyToOne    private Multiplex multiplex;}篩選:-@Entitypublic class Screening {    @Id    @GeneratedValue(strategy = GenerationType.IDENTITY)    private long id;    @OneToOne    private Screen screen;    @OneToOne    private Movie movie;    private LocalDate date;    private LocalTime time;    private float pricePerSeat;}對于我嘗試的第一個查詢@Query("SELECT m FROM Multiplex m Where m.id = :mId and m.screens.name = :screenName")    public Optional<Multiplex> findScreenByName(@Param("mId") long id, @Param("screenName") String name);
查看完整描述

1 回答

?
慕娘9325324

TA貢獻1783條經(jīng)驗 獲得超4個贊

m.screens不是一個Screen字段,而是List<Screen>. 所以表達m.screens.name:=screenName是錯誤的。

嘗試這個

1)

@Query("select m from Multiplex m, Screen s where m.id=s.multiplex.id and m.id =:mId and s.name =:screenName")
    public Optional<Multiplex> findByMultiplexIdAndScreenName(@Param("mId") long id, @Param("screenName") String name);

2)

@Query("select distinct m from Multiplex m, Screening s where m.id=s.screen.multiplex.id and s.movie=:movie and s.date =:date")
        public List<Multiplex> findAllByMovieAndDate(@Param("movie") Movie movie, @Param("date") LocalDate date);

或者

@Query("select distinct s.screen.multiplex from Screening s where s.movie=:movie and s.date =:date")
            public List<Multiplex> findAllByMovieAndDate(@Param("movie") Movie movie, @Param("date") LocalDate date);

通過使用最后一個,如果決定將 FetchTypes 更改為 Lazy,您可能會遇到異常


查看完整回答
反對 回復(fù) 2023-09-06
  • 1 回答
  • 0 關(guān)注
  • 137 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號