Thread: 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/