SQLData user-defined-types and getObject()

From: Assad Jarrahian <jarraa(at)gmail(dot)com>
To: pgsql-general(at)postgresql(dot)org, pgsql-jdbc(at)postgresql(dot)org
Subject: SQLData user-defined-types and getObject()
Date: 2006-01-08 03:28:28
Message-ID: 4bd3e1480601071928r372ccb5ct8653d50558edeba@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general pgsql-jdbc

Hi All,
I am quite confused (PLEASE PLEASE Help), I cannot find anything on
the web). I read that you can declare a class that implements SQLData
(in this case I set up a class called Complex from the /src/tutorial
datatype that mimics the user-defined datatype in the db) and then set
the mapping appropriately (see below).
But it does not work ( I maybe doing something wrong)!!!
The "getObject" code throws:
Exception in thread "main" org.postgresql.util.PSQLException:
Unsupported Types value: 2,000
and the setObject code throws:
Exception in thread "main" java.lang.ClassCastException: java.lang.Class
(points to the getObject() line

ANY help would be much appreciated!
much thanks in advance.
-assad

Reference:
//Mapping type setup
java.util.Map map = db.getTypeMap();
if(map == null) map = new HashMap();
map.put("complex", Class.forName("Complex"));
db.setTypeMap(map);

map = db.getTypeMap();

and then I can set and get as follows:

//set info
Complex test = new Complex();
test.a = 5.6;
test.b = 3.4;
Statement stmt = db.createStatement();
PreparedStatement temp = db.prepareStatement("INSERT INTO
test_complex VALUES (DEFAULT, ?);");
temp.setObject(1,test);
temp.executeUpdate();

//I also tried with setObject with the type specified to
java.sql.TYPE_JavaObject

//get info

ResultSet rs = stmt.executeQuery("SELECT * FROM test_complex");
System.out.println("Got ");

while(rs.next()){
System.out.println("Got ");
ResultSetMetaData metaData = rs.getMetaData();
System.out.println("Type from SQL: " +
metaData.getColumnTypeName(2));

Object foo = (Object) rs.getObject(2, map);

if (foo instanceof Complex) {
Complex cp = (Complex)foo;
System.out.println("Got: " + cp + " from DB");

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Neil Conway 2006-01-08 04:00:52 Re: Create one prepared function
Previous Message Guy Rouillier 2006-01-08 02:10:17 Re: E-mail harvesting on PG lists?

Browse pgsql-jdbc by date

  From Date Subject
Next Message Kris Jurka 2006-01-08 08:17:19 Re: [JDBC] SQLData user-defined-types and getObject()
Previous Message Assad Jarrahian 2006-01-07 22:29:07 getObject and userDefined dataTypes