Salve a tutti,
sto giocano un po con java e in particolare su un progetto creato (da qualcun altro) a scopo didattico.

mi sono imbattuto in un problema che non riesco a risolvere.

sostanzialmente nell'insert viene inserita la pk = 0 recuperata dall'inserimento precedente (si è "perso" quella reale) e quindi quando esegue la query da errore di pk duplicata (anche se la 0 nel DB non c'è).

la soluzione più semplice che mi è venuta in mente è quella di forzare la pk una volta per poi procedere normalmente, ma non riesco a capire come fare.
PS: sono aperto a tutti i tipi di soluzione

GRAZIE

codice:
    public int insert(Film film) throws DAOException{
        String sql = "INSERT INTO FILM (TITOLO,ANNO,DURATA,GENERE,COSTO,IDREGISTA,POSTER,URL,INFO) "
                              + " VALUES(?,?,?,?,?,?,?,?,?) ";
    
        try (PreparedStatement pst = con.prepareStatement(sql, new String[]{"IDFILM"});) {
            //sostituzione dei marcatori ?:
            pst.setString(1, film.getTitolo());
            pst.setShort(2, film.getAnno()==null ? null : film.getAnno() ); 
            pst.setShort (3, film.getDurata());
            pst.setString(4, film.getGenere()==null ? null : film.getGenere() );
            pst.setDouble(5, film.getCosto());
            pst.setInt   (6, film.getRegista().getIdregista());
            pst.setString(7, film.getPoster()); 
            pst.setString(8, film.getUrl());
            pst.setString(9, film.getInfo()==null ? null : film.getInfo() ); 
            
            System.out.println(film.toString());
            
           //Esegue la query preparata
            pst.executeUpdate(); 
            
            System.out.println("insert ok");
            
            //ottiene la PK generata da TRIGGER==>SEQUENCE
            res = pst.getGeneratedKeys(); 
            res.next();

            //contiene l'ultima PK generata
            return res.getInt(1);