Java Jpa One To Many Problems [требует правки]

238
16 сентября 2017, 23:29

I have problem with extracting data. I have next entities.

  1. Film
  2. FilmManager
  3. Ticket
  4. FilmSessions

    @Table(name = "FILM_MANAGERS")
    @Entity
    public class FilmManager { 
        @OneToOne(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
        @JoinColumn(name = "FILM_ID",updatable = false,insertable = false)
        private Film film;
    
    @OneToMany(cascade = CascadeType.REMOVE, fetch = FetchType.EAGER,mappedBy = "filmManager")
    private List(FilmSession) sessions;
    other fields....
    
    }
    @Entity
    @Table(name = "FILMS")
    public class Film {
        @OneToOne(mappedBy = "film")
        private FilmManager filmManager;
        @OneToOne(mappedBy = "film")
        private Ticket ticket;
    
    other fields...
    
    }
    @Table(name = "TICKETS")
    @Entity
    public class Ticket {
        @ManyToOne
        @JoinColumn(name = "USER_ID", updatable = false, insertable = false)
        @JsonBackReference
        private User user;
    
    @OneToOne(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
    @JoinColumn(name = "FILM_ID", updatable = false, insertable = false)
    private Film film;
    
    }
    @Table(name = "FILM_SESSIONS")
    @Entity
    public class FilmSession {
    @ManyToOne
        @JoinColumn(name = "FILM_MANAGER_ID",insertable = false, updatable = false)
        private FilmManager filmManager;
    }
    
     @GetMapping("/films/{filmId}")
        public String getFilm(ModelMap modelMap, @PathVariable("filmId") String filmId) {
            FilmManager filmManager = filmManagerService.getFilm(Long.parseLong(filmId));
            modelMap.addAttribute("filmManager", filmManager);
            modelMap.addAttribute("screenshots", resourceExtractor.getScreenShots(filmManager));
            modelMap.addAttribute("sessions", filmManager.getSessions().stream().map((e) -> e.getSessionTime()).collect(joining(",")));
            System.out.println("amount of sessions: " + filmManager.getSessions().stream().count());
            return "filmPage";
        }
    
    amount of sessions: 11
    

That last SOUT outputs 11 when on the screen you can see that i have only one session for this filmManager when it should be only one Session.I found out that everytime i insert a new Ticket in db amount of loaded sessions is getting bigger.so currently i have 11 tickets.What's wrong with this?

here is Tickets table picture

thanks everyone for help.

READ ALSO
Как поменять родительный падеж в temporals.format(…)?

Как поменять родительный падеж в temporals.format(…)?

Использую Thymeleaf и при выводе месяца, он почему-то выводится в родительном падеже, и я никак не могу понять почему

299
javascript функция игнорирует условие в if

javascript функция игнорирует условие в if

Есть некая js консоль на тестируемом сервисе с описанием объектов и куском кода в котором необходимо менять условие в зависимости от требованийВ...

225
SQL Java SELECT

SQL Java SELECT

Самый простой вопрос по SQLite, так как только начал изучать - как составить query для чтения всех имен с двух таблицЕсть таблица - mentors и applicants, обе...

240
android проигрывание аудио файла с SD

android проигрывание аудио файла с SD

ЗдравствуйтеНа SD карте находится аудио файл summertime

191