From: fredt <fr...@us...> - 2002-10-17 18:51:33
|
You should try a test program which serializes your object outside HSQLDB to see if you have successfully implemented the requirements of the java.io.Serializable interface. A serializable object should not throw. You can use the following test code: ByteArrayOutputStream bo = new ByteArrayOutputStream(); try { ObjectOutputStream os = new ObjectOutputStream(bo); os.writeObject(yourobject); } catch (Exception e) { // problem with serialization - get the message from the exception } Fred Toussi -------------------- Steve Ingersoll wrote: I am running 1.7.0. I originaly had the object passed directly in but that also had the problem. I was at one point getting a class cast exception for a different reason which I thought was on the execute call but it turned out to be on the statement insert call since it was not initialized at that point. I fixed the problem but never went back and change it to pass the object directly. Thanks Steve Ingersoll -------------------- Please report which version of software you are using. Versions prior to 1.7.0 had problems with objects. In your code you do not have to define a new variable and cast your object to Object. Every java object is an Object. Fred Toussi -------------------- Steve Ingersoll wrote: I am getting a "Serialization failure: 40001" doing an insert command from within a Java program. I am trying to create a table that contains a java object. The create statement I am using is: Statement stmnt = conn.createStatement(); stmnt.executeUpdate( "CREATE TABLE Users " + "( username VARCHAR PRIMARY KEY," + " pwdRecord OBJECT )"); This seems to work ok but when I do the following is when I get the error: PreparedStatement insertStatement = conn.prepareStatement( "INSERT INTO Users (username, pwdRecord) VALUES (?, ?)"); insertStatement.setString(1, pwdEntry.getUsername()); Object pwdRecord = (Object)pwdEntry; insertStatement.setObject(2, pwdRecord); //insertStatement.setNull(2,java.sql.Types.JAVA_OBJECT); System.out.println("Before execute"); insertStatement.executeUpdate(); System.out.println("After execute"); } catch (SQLException ex) { System.out.println("Exception: " + ex); throw ex; } If I comment out the setObject for item 2 and replace it with the setNull then the call works. The PwdEntry object is defined as: public class PwdEntry implements java.io.Serializable { |