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. :)