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");