Обсуждение: Java persistence with enum types
Hi, I have an enum type in my postgres 8.3 database:
CREATE TYPE typeOfNames AS ENUM ('Latin', 'Common', 'Local');
I am trying to access the database through the Java Persistence API using Netbeans:
@Lob
@Column(name = "typeofname")
private String typeofname;
This works for reading from the database, but writing to it, I get the error message:
Caused by: org.postgresql.util.PSQLException: ERROR: column "typeofname" is of type typeofnames but expression is of type character varying
Anyone got any suggestions?
Thanks
CREATE TYPE typeOfNames AS ENUM ('Latin', 'Common', 'Local');
I am trying to access the database through the Java Persistence API using Netbeans:
@Lob
@Column(name = "typeofname")
private String typeofname;
This works for reading from the database, but writing to it, I get the error message:
Caused by: org.postgresql.util.PSQLException: ERROR: column "typeofname" is of type typeofnames but expression is of type character varying
Anyone got any suggestions?
Thanks
Susannah Relf wrote:
> Hi, I have an enum type in my postgres 8.3 database:
>
> CREATE TYPE typeOfNames AS ENUM ('Latin', 'Common', 'Local');
>
> I am trying to access the database through the Java Persistence API using
> Netbeans:
> @Lob
> @Column(name = "typeofname")
> private String typeofname;
One minute with Google:
@Enumerated
http://java.sun.com/javaee/5/docs/api/javax/persistence/Enumerated.html
http://forums.java.net/jive/thread.jspa?messageID=240608
http://www.oracle.com/technology/products/ias/toplink/jpa/resources/toplink-jpa-annotations.html#Enumerated
... etc ...
--
Craig Ringer
Hi,
Thanks for trying to help Craig, but I had tried the @enumerated annotation
already with the same error message. The @enumerated annotation doesn't
return an enum type to Postgres, but instead returns the ordinal value (by
default) or a string value of the enum. This means I get either the error
message:
Caused by: org.postgresql.util.PSQLException: ERROR: column "typeofname" is
of type typeofnames but expression is of type character varying
(if I use enumtype STRING)
Or
Caused by: org.postgresql.util.PSQLException: ERROR: column "typeofname" is
of type typeofnames but expression is of integer
Craig Ringer wrote:
>
> Susannah Relf wrote:
>> Hi, I have an enum type in my postgres 8.3 database:
>>
>> CREATE TYPE typeOfNames AS ENUM ('Latin', 'Common', 'Local');
>>
>> I am trying to access the database through the Java Persistence API using
>> Netbeans:
>> @Lob
>> @Column(name = "typeofname")
>> private String typeofname;
>
> One minute with Google:
>
> @Enumerated
> http://java.sun.com/javaee/5/docs/api/javax/persistence/Enumerated.html
>
> http://forums.java.net/jive/thread.jspa?messageID=240608
> http://www.oracle.com/technology/products/ias/toplink/jpa/resources/toplink-jpa-annotations.html#Enumerated
> ... etc ...
>
> --
> Craig Ringer
>
> --
> Sent via pgsql-jdbc mailing list (pgsql-jdbc@postgresql.org)
> To make changes to your subscription:
> http://www.postgresql.org/mailpref/pgsql-jdbc
>
>
--
View this message in context: http://www.nabble.com/Java-persistence-with-enum-types-tp23684815p23705886.html
Sent from the PostgreSQL - jdbc mailing list archive at Nabble.com.
On Mon, May 25, 2009 at 2:01 PM, Susannah <cyclingrelf@googlemail.com> wrote: > > Hi, > > Thanks for trying to help Craig, but I had tried the @enumerated annotation > already with the same error message. The @enumerated annotation doesn't > return an enum type to Postgres, but instead returns the ordinal value (by > default) or a string value of the enum. This means I get either the error > message: > > Caused by: org.postgresql.util.PSQLException: ERROR: column "typeofname" is > of type typeofnames but expression is of type character varying > (if I use enumtype STRING) > > Or > > Caused by: org.postgresql.util.PSQLException: ERROR: column "typeofname" is > of type typeofnames but expression is of integer I think you have the same problem I did a while back. A colleague of mine figured it out. There is a partial answer here: http://stackoverflow.com/questions/851758/java-enums-jpa-and-postgres-enums-how-do-i-make-them-work-together Don't have time to dig up and clean up the actual code we use now but I can if you'd like (and you're not in a hurry). mvg, Jasper -- http://xkcd.com/583/