Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2010
    Messaggi
    457

    Hibernate - eccezione No row with the given identifier exists

    Buongiorno a tutti,
    ho già letto da una marea di forum.
    Sto cercando di capire il perchè viene restituito l'eccezione: java.lang.Exception: No row with the given identifier exists: [POJO.Computerdevice#0].

    In sintesi c'è una tabella XXX che ha una foreign key verso Computerdevice

    Quale potrebbe essere la soluzione? Ricevo questo errore nel momento in cui eseguo la get
    codice:
      Query qry = conn.createQuery("from Esecuzione where DataInizio between '2014-04-01' and '2014-04-29'  "); 
            result = qry.list();  
    //           ((Esecuzione) result.get(0)).getFailcode().getDescrizione();
            
            for(Object esec : result) {
             Esecuzione tmpEsecuzione = (Esecuzione) esec;
             Computerdevice cp=tmpEsecuzione.getComputerdevice();
             System.out.println("COMPUTER_DEVISE === "+cp.getComputer().getDescrizione());

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Beh... prima questione: quella query può dare dei risultati oppure no (a seconda che esistano o meno dei record che soddisfano la clausola WHERE). Se non vi sono record che soddisfano la clausola WHERE, verrà restituita una lista vuota... e non puoi di certo andare a prendere il primo valore ( result.get(0) ) da una lista vuota...

    Ora, creare le query in quel modo è il primo passo verso l'errore: MAI codificare valori direttamente nella stringa sql (a meno che questi valori non siano "standard"... e le date sono la cosa meno standard che esista). Piuttosto, usa dei marcatori e passa i valori usando i parametri (esattamente come si fa con le PreparedStatement). SOPRATTUTTO quando si hanno campi di tipo Data/ora, che ciascun DBMS tratta a modo suo, con le sue caratteristiche, i suoi formati di input ecc. Quindi, secondo me quella query non tira fuori alcun risultato propio per come sono espressi i valori dei campi nella WHERE.


    Primo passo: verificare che vi siano dei risultati:

    codice:
    result = qry.list();
    if ((result != null) && !result.isEmpty()) {
       ...
    } else {
       System.out.println("Non vi sono risultati");
    }

    Se ti compare la scritta "Non vi sono risultati", vai ad analizzare la query... e segui il consiglio: non mettere valori fissi nella WHERE, soprattutto se sono date.


    Ciao.
    Ultima modifica di LeleFT; 30-04-2014 a 12:50
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.