PDA

Visualizza la versione completa : [Java] serializzazione e ClassCastException


var
23-10-2004, 20:45
salve, ho la seguente classe:



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



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:



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

var
24-10-2004, 18:03
dovrei aver risolto: mi è bastato passare da un campo di tipo BLOB a uno di tipo MEDIUMBLOB.

saluti. :)

Loading