kab wrote:
Hi,
I tried to directly insert a Java object from typ mottrow.MItem to the
table ITEMS in my embedded Derby DB. But I got the following error:
java.sql.SQLException: An attempt was made to get a data value of type
'BLOB' from a data value of type ' mottrow.MItem'
In the query I used, I had defined the row ITEM to the typ BLOB, because
with the typ JAVA_OBJECT I got an error. In the derby documentation I
have read that the a JAVA_OBJECT is stored as BLOB in the DB, so I
defined it directly as BLOB.
SQL query used to create table:
String query = "create table APP.ITEMS (" +
"ID INT NOT NULL PRIMARY KEY GENERATED ALWAYS AS
IDENTITY (START WITH 1, INCREMENT BY 1)," +
"ITEM BLOB," +
"LEVEL INT NOT NULL," +
"OWNER VARCHAR(30)," +
"LASTACCESS DATE," +
"FORMERLEVEL INTEGER NOT NULL )";
Statement to insert my JAVA_OBJECT:
PreparedStatement stmt = con.prepareStatement("insert into
APP.ITEMS (ITEM) VALUES (?)");
stmt.setObject(1,item);
stmt.addBatch ( );
Does somebody knows a solution for this problem?
Hello Kevin,
I'm sure someone will give you the full story, but I believe you might
have to serialize your objects yourself before you store them into the
database as BLOB/VARCHAR FOR BIT DATA (depending on the maximum size of
your objects, or your own preferences).
Another way to go is to use the object relational mapping technique, a
third is to use an object-store instead of a relational database.
I think the JAVA_OBJECT type in Derby has been disabled, but could it
have been available in earlier Cloudscape releases?
I see comments in the code suggesting the support for JAVA_OBJECT is
"half-baked", so it would be nice if someone with knowledge of earlier
times could enlighten the rest of us :)
regards,
--
Kristian
Sincerely
Kevin