Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    [Java] serializzazione e ClassCastException

    salve, ho la seguente classe:

    codice:
    import java.io.Serializable;
    import java.util.ArrayList;
    
    public class Fact implements Serializable {
    
    private String name;
    private ArrayList al=new ArrayList();
    
    public Fact(String _name) {
    name=_name;
    al.add("Pippo");
    al.add("Pluto");
    al.add("Papero");
    }
    
    public String getName() {
    return name;
    }
    
    public ArrayList getList() {
    return al;
    }
    }

    il mio obiettivo è serializzare oggetti di classe Fact in una tabella di un database mySQL. tale tabella ha due campi: 'name', un varchar che uso come chiave e 'object', un campo di tipo blob che uso per memorizzare gli oggetti Fact.
    questo è il codice che uso per inserire gli oggetti nel db (e sembra funzionare bene):

    codice:
    public boolean putFact(Fact fact) {
    Fact result=null;
    try {
    PreparedStatement pstmt=conn.prepareStatement("INSERT INTO facts VALUES (?, ?)");
    pstmt.setString(1, fact.getName());
    pstmt.setObject(2, fact);
    pstmt.executeUpdate();
    pstmt.close();
    } catch (SQLException ex) {
    System.out.println(ex.toString());
    return false;
    }
    return true;
    }
    questo metodo invece dovrebbe leggere un oggetto dalla tabella:

    codice:
    public Fact getFact(String factName) {
    Fact result=null;
    try {
    Statement stmt=conn.createStatement();
    ResultSet rs=stmt.executeQuery("SELECT object FROM facts WHERE name='"+factName+"'");
    while (rs.next()) {
    result=(Fact)rs.getObject(1);
    }
    rs.close();
    stmt.close();
    } catch (SQLException ex) {
    System.out.println(ex.toString());
    return null;
    }
    return result;
    }
    sulla settima riga di tale metodo ho un'eccezione ClassCastException: perchè?
    inoltre, ho notato che se rimuovo l'attributo di tipo ArrayList dalla classe Fact, il mio codice funziona tranquillamente.

    qualche suggerimento?
    grazie mille. :)

  2. #2
    dovrei aver risolto: mi è bastato passare da un campo di tipo BLOB a uno di tipo MEDIUMBLOB.

    saluti. :)

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.