OK - I ended up implementing a new HStore class in my own project that overrides org.geotools.data.postgis.HStore and I changed the toString method to:
@Override public String toString() { // Quick shortcut if (isEmpty()) { return EMPTY; } // Setup a json output via code, avoiding to include JSON artifacts dependencies StringBuilder sb = new StringBuilder(""); String prefix = ""; for (Map.Entry<String, String> entry : entrySet()) { sb.append(prefix); sb.append(doubleQuoteString(entry.getKey())) .append("=>") .append(doubleQuoteString(entry.getValue())); prefix = ","; } return sb.toString(); } this causes the insert statement to succeed and the HStore value specified correctly. On Thu, Oct 14, 2021 at 10:16 PM Alessandro Ferrucci < alessandroferru...@gmail.com> wrote: > I checked this against GeoTools 26.0 and the same issue exists there. > > On Thu, Oct 14, 2021 at 9:57 PM Alessandro Ferrucci < > alessandroferru...@gmail.com> wrote: > >> OK - so I stepped through the code. >> >> When it comes to encoding the HStore value, FilterToSQL.java goes into >> >> protected void writeLiteral(Object literal) throws IOException >> >> and there is no block there to handle HStore data type, so it ends up >> essentially utilizing HStore.toString ( which outputs the object as JSON ). >> >> I am using GeoTools 22-RC >> >> On Thu, Oct 14, 2021 at 9:30 PM Alessandro Ferrucci < >> alessandroferru...@gmail.com> wrote: >> >>> Hello - >>> >>> I am attempting to insert features into a PostGIS table. I create my >>> feature types from the postgis table itself and construct the features from >>> that. One of the feature attributes is an hstore attribute. The schema is >>> being correctly read from the PostGIS table and GeoTools is correctly able >>> to build a feature type where the attribute is an hstore object type. >>> >>> When it comes to constructing the SQL statements, the PostGIS dialect >>> plugin is inserting the hstore attribute as such: >>> >>> '{"PROP_1": "VALUE_1", "PROP_2":"VALUE_2"}' >>> >>> However - this is incorrect syntax for specifying an hstore value in >>> Postgres. >>> >>> The correct syntax is: >>> >>> ' "PROP_1" => "VALUE_1", "PROP_2" => "VALUE_2"' >>> >>> Is this a known bug or am I missing something? >>> >>> >> >> -- >> Signed, >> Alessandro Ferrucci >> > > > -- > Signed, > Alessandro Ferrucci > -- Signed, Alessandro Ferrucci
_______________________________________________ GeoTools-GT2-Users mailing list GeoTools-GT2-Users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/geotools-gt2-users