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):
questo metodo invece dovrebbe leggere un oggetto dalla tabella: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; }
sulla settima riga di tale metodo ho un'eccezione ClassCastException: perchè?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; }
inoltre, ho notato che se rimuovo l'attributo di tipo ArrayList dalla classe Fact, il mio codice funziona tranquillamente.
qualche suggerimento?
grazie mille. :)

Rispondi quotando