Re: [HACKERS] JPA + enum == Exception
Kris Jurka <books@ejurka.com>
From: Kris Jurka <books@ejurka.com>
To: Tom Dunstan <tom@tomd.cc>
Cc: Tom Lane <tgl@sss.pgh.pa.us>, "Hudson, Derrick" <dhudson@redcom.com>, "Marc G. Fournier" <scrappy@hub.org>, "pgsql-jdbc@postgresql.org" <pgsql-jdbc@postgresql.org>
Date: 2013-02-08T16:26:27Z
Lists: pgsql-hackers
On Fri, 8 Feb 2013, Tom Dunstan wrote: > On 8 February 2013 15:25, Tom Lane <tgl@sss.pgh.pa.us> wrote: > > > AFAIK this is just business as usual with JDBC: setString() implies that > > the parameter is of a string type. It'll fall over if the type actually > > required is anything but a string. (I'm no Java expert, but I seem to > > recall that using setObject instead is the standard workaround.) > > > > Yes, you can use setObject(1, "enumval", Types.OTHER). I was hoping > that setString might work, as mapping java enum values to strings in > the database is a very common ORM technique that is built into > basically all major ORMs including all that support the JPA standard, > and it leads to people using varchars instead of typesafe enums in > their dbs. The other workaround is to use the url parameter stringtype=unspecified to have setString always bind to unknown instead of varchar, which then shouldn't require any code changes. Kris Jurka