JBDC Prepared Statement und hstore

Hallo Forum,

kann mir hier irgendjemand einen Tipp geben, wie man mittels JAVA (JDBC) ein Prepared Statment (INSERT) erzeugt, welches einen Spalte (2) vom Typ hstore in der Datenbanktabelle enthält. Die Suche im Netz hat mich einfach nicht weiter gebracht.

Mein Beispiel-Code

PreparedStatement stmt = null;
stmt = dbConnection.prepareStatement("INSERT INTO planet_osm_point (osm_id, tag, z_order, way) VALUES (?,?,?,?)");
 stmt.setInt(1, Integer.parseInt(osm_id));
[color=#ff0000][B]stmt.setObject(2, StringUtils.join(hstoreArrayList, ","));[/B][/color]
stmt.setInt(3, Integer.parseInt(z_order));
stmt.setObject(4, new PGpoint(lon, lat));

Parameter 2 enthält eine ArrayList mit den einzelnen Werten des hstore (z.B. “key1”=>“value2”).

Meine Vermutung: Es müsste irgendwie analog zum PostGIS POINT() in Parameter 4 über setObject(…) und einen PG*** Objekt gehen. Nur wie?

Vielen Dank
TorstenA

Das folgende funktioniert bei mir:

stmt.setObject(2, "foo => bar, \"foo bar\" => \"some value\"", Types.OTHER);

Das erzeugt zwei Keys in dem hstore.

Einmal foo mit dem Wert bar und einmal foo bar (mit einem Leerzeichen im Key) und dem Wert some value (auch mit Leerzeichen)

Vielen Dank, es funktioniert jetzt.

PreparedStatement stmt = null;
stmt = dbConnection.prepareStatement("INSERT INTO " + mOsmTableNameHash.get("point") + " (osm_id, tag, z_order, way) VALUES (?,?,?,?)");
stmt.setInt(1, Integer.parseInt(osm_id));
stmt.setObject(2, StringUtils.join(hstoreArrayList, ","), Types.OTHER);
stmt.setInt(3, Integer.parseInt(z_order));
stmt.setObject(4, new PGgeometry("SRID=4326;POINT(" + lon + " " + lat + ")"));